我正在尝试使用Flask-SqlAlchemy连接到MySQL数据库,这是我的参数:
SQLALCHEMY_DATABASE_URI = 'mysql://root:pass@127.0.0.1/database?charset=utf8'
但是当我去网址时,我收到了这个错误:
AttributeError:'tuple'对象没有属性'drivername'
如果我将SQLALCHEMY_DATABASE_URI
更改为sqlite:///db.sqlite
,则可以正常使用。
我错过了什么?
注意:我也试过mysql+mysqldb://
,没有任何运气。
答案 0 :(得分:10)
这个错误经常出现,因为它们是URL字符串后面的额外逗号。所以,而不是......
SQLALCHEMY_DATABASE_URI = 'mysql://root:pass@127.0.0.1/database?charset=utf8'
......你有......
SQLALCHEMY_DATABASE_URI = 'mysql://root:pass@127.0.0.1/database?charset=utf8',
额外的逗号将SQLALCHEMY_DATABASE_URI转换为元组,并将字符串作为唯一值。 SQLAlchemy将跳过尝试解析生成的元组,但Flask-SQLAlchemy仍将尝试使用“已解析”的结果。
通过删除额外的逗号来解决此问题。