python >=3.7.9
Flask 1.12
Flask-SQLAlchemy 2.4.4
Flask-WTF 0.14.3
flask_migrate 2.5.3
flask_script 2.0.6
flask_restful 0.3.8
requests
redis
pymysql 0.10.1
MDB_URI = 'mysql+pymysql://........
TypeError: Invalid argument(s) 'use_native_unicode' sent to create_engine(), using configuration MySQLDialect_mysqldb/QueuePool/Engine. Please check that the keyword arguments are appropriate for this combination of components.
涉及源码 site-packages/sqlalchemy/engine/strategies.py", line 173, in create
# all kwargs should be consumed
if kwargs: # print(kwargs) == {"use_native_unicode":''}
raise TypeError(
"Invalid argument(s) %s sent to create_engine(), "
"using configuration %s/%s/%s. Please check that the "
"keyword arguments are appropriate for this combination "
"of components."
% (
",".join("'%s'" % k for k in kwargs),
dialect.__class__.__name__,
pool.__class__.__name__,
engineclass.__name__,
)
)
engine = engineclass(pool, dialect, u, **engine_args)
db = SQLAlchemy() flask_sqlalchemy/init.py
# 默认 use_native_unicode=True
def __init__(self, app=None, use_native_unicode=True, session_options=None,
metadata=None, query_class=BaseQuery, model_class=Model,
engine_options=None):
是不是 flask_sqlalchemy 和 sqlalchemy 兼容问题,除了改源码还有别的解决方法吗。
1
rogwan 2020-09-18 12:28:55 +08:00
应该是版本问题,把版本号稍微降低一点试试
|
2
Kobayashi 2020-09-18 16:00:07 +08:00
应该是二者兼容问题,我看了一眼在 flask_sqlalchemy 在 3.0 (dev) 中去除了这个初始化参数。猜测是上游 sqlalchemy 更新了,这个参数不能用了?
flask_sqalchemy 依赖写得比较宽松,install_requires=["Flask>=0.10", "SQLAlchemy>=0.8.0"]. 建议把 sqlalchemy 版本列出来,逐步往回降试试。 |