python3 sqlalchemy No module named 'MySQLdb'

Python ORM之一: sqlalchemy

python3 使用sqlalchemy连接mysql数据库报错ModuleNotFoundError: No module named 'MySQLdb'

练习Pyhton核心编程第三版的第6章-数据库编程时,

    try:
        orm = SQLAlchemyTest(DSNs[db])
    except RuntimeError:
        printf('\nERROR: %r not supported, exit' % db)
        return

当 db = 'mysql'时,总是报错。捕获异常是ImportError:No module named 'MySQLdb'
另外我的DSNs是:

DSNs = {
    'mysql': 'mysql://root:mypassword@localhost/%s' % DBNAME,
    'sqlite': 'sqlite:///:memory',
}

这是因为 SQLAlchemy 连接mysql默认驱动是MySQLdb,MySQLdb仅支持 python2.x, 没有支持python3的版本,如果使用python3.x版本时,需要安装并使用额外的库 pymysql
然后将DSNs改为:

DSNs = {
    'mysql': 'mysql+pymysql://root:123456@localhost/%s' % DBNAME,
    'sqlite': 'sqlite:///:memory',
}

总结

这本书虽然评价不错,销量很高,但是我个人对这本书不是很满意。

  • 首先,我觉得有些章节如第3章因特网客户端编程看得我云里雾里,可能是我基础不行能力有限,所以选择匆匆略过这一章,目前我只读到第6章,但还是想这么说。
  • 其次,此书年代很久远了,很多代码都是Python2版本。虽然第3版是近两年(貌似2016)年重新修订的,但是并没有把代码都改成Python3版本的,仅仅是提供一些Python2代码转成Python3代码的方法(比如 2to3 这个依赖)以及如何书写在python2, python3中都可以运行的代码。
  • 但我觉得这根本不能解决问题,因为代码好转换,但是很多依赖的模块要不就是仅支持Python2,要不就是根本就消失了(不维护了,py2和py3都无法使用),所以这就很锻炼人了,你需要自己去找替代模块。即便你只用Python2,也会遇到很多关于依赖的问题。这些就是极其耗费时间和精力的,比如当前这个问题,甚至很打击你的学习兴趣。。。

行了,不说这些废话了(个人意见,仅供参考)

最后贴上解决此问题的参考文章

你可能感兴趣的:(python3 sqlalchemy No module named 'MySQLdb')