类型错误:使用 flask_sqlalchemy 时发送到 create_engine() 的参数“pool_size”无效

Posted

技术标签:

【中文标题】类型错误:使用 flask_sqlalchemy 时发送到 create_engine() 的参数“pool_size”无效【英文标题】:TypeError: Invalid argument(s) 'pool_size' sent to create_engine() when using flask_sqlalchemy 【发布时间】:2016-09-05 13:55:20 【问题描述】:

我正在使用 SQLAlchemy==1.0.9 和 Flask-SQLAlchemy==2.1 在我的 Flask 应用程序中并想连接到一个 sqlite 数据库。

我得到了错误

TypeError: Invalid argument(s) 'pool_size' sent to create_engine(), using configuration SQLiteDialect_pysqlite/NullPool/Engine.

因为 flask_sqlalchemy 总是尝试使用 pool_size 参数创建引擎。

据我了解,参数 pool_size 不允许作为 SQLAlchemy 中 DefaultEngineStrategy 的参数。

有人知道这个问题的解决方法吗?

【问题讨论】:

我无法在我的机器上使用您指定的确切库版本和 Flask SQLAlchemy 站点上的 MCVE 为 Python 2.7 或 Python 3.5 重现此问题。一定是关于你是如何设置它的,但你没有显示任何代码。 【参考方案1】:

我通过添加两个 Flask 配置参数在我的 Flask/SQLALchemy/SQLite 单元测试中解决了这个问题:

app.config.update(
    'SQLALCHEMY_POOL_SIZE': None,
    'SQLALCHEMY_POOL_TIMEOUT': None
)

【讨论】:

【参考方案2】:

终于找到了:有同事在Config Base Class中引入了config param SQLALCHEMY_POOL_SIZE来配合mysql使用。

不过,如果 flask_sqlalchemy 或 sqlalchemy 会忽略该参数而不是抛出错误,那就太好了。

我为 flask_sqlalchemy 项目创建了一张票: https://github.com/mitsuhiko/flask-sqlalchemy/issues/426

【讨论】:

以上是关于类型错误:使用 flask_sqlalchemy 时发送到 create_engine() 的参数“pool_size”无效的主要内容,如果未能解决你的问题,请参考以下文章

ModuleNotFoundError:没有名为“flask_sqlalchemy”的模块

如何在 flask_sqlalchemy 中查询 ScalarListType

ModuleNotFoundError:没有名为“flask_sqlalchemy.orm”的模块

flask_sqlalchemy join的正确使用方法

flask_sqlalchemy的使用

text 使用Flask_SQLAlchemy连接到Azure SQL