ber*_*rry 6 python sqlalchemy flask flask-sqlalchemy
我刚刚将我的项目 Flask-SQLAlchemy 版本更新为最新版本(v2.4)。由于某些 SQL-Alchemy 配置参数已被弃用,我现在按照文档将 SQLALCHEMY_ENGINE_OPTIONS 作为字典添加到我的配置类中。但是,当我尝试查询数据库时出现错误。
我正在查找 sqlalchemy 的 create_engine() 所需的确切关键字。
这是我的配置类:
class ConfigAPI:
try:
SQLALCHEMY_DATABASE_URI = os.environ['MYSQL_URI']
except KeyError as e:
logging.warning('FAILED DEFINING MYSQL PARAMETER')
logging.fatal(e)
sys.exit(1)
SECRET_KEY = '123456asdsadfsdfasadfa67893nvkabl790'
SQLALCHEMY_ECHO = False
SQLALCHEMY_TRACK_MODIFICATIONS = False
SQLALCHEMY_ENGINE_OPTIONS = {
'pool': QueuePool,
'pool_size' : 10,
'pool_recycle':120,
'pool_pre_ping': True
}
Run Code Online (Sandbox Code Playgroud)
这是我的 app_factory 文件
db = SQLAlchemy()
def create_api(config=ConfigAPI):
app = Flask(__name__)
from app_projects.internal_api.api_v0 import blueprint as v0
app.config.from_object(config)
db.init_app(app)
cors.init_app(app)
app.register_blueprint(v0)
return app
Run Code Online (Sandbox Code Playgroud)
这是我收到的错误:
TypeError: Invalid argument(s) 'pool_size','pool_recycle','pool_pre_ping' sent to create_engine(), using configuration MySQLDialect_pymysql/type/Engine. Please check that the keyword arguments are appropriate for this combination of components.
Run Code Online (Sandbox Code Playgroud)
我在这里缺少什么?
正如您在评论中已经提到的,问题出在 pool 参数中。
SQLAlchemy的文件指定该实例的Pool或者QueuePool可能是一个pool参数。
有效的例子是:
SQLALCHEMY_ENGINE_OPTIONS = {
'pool': QueuePool(creator),
'pool_size': 10,
'pool_recycle': 120,
'pool_pre_ping': True
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6692 次 |
| 最近记录: |