我刚刚将我的项目Flask-SQLAlchemy版本更新为最新版本(v2.4)。由于取消了一些SQLALCHEMY_ENGINE_OPTIONS参数,我现在按照文档的方式将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
}这是我的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这是我收到的错误:
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.我在这里错过了什么?
发布于 2019-10-22 12:16:01
正如您在注释中已经提到的,问题出现在池参数中。
SQLAlchemy文档指定( Pool或QueuePool的实例)可以是pool参数。
有效的例子是:
SQLALCHEMY_ENGINE_OPTIONS = {
'pool': QueuePool(creator),
'pool_size': 10,
'pool_recycle': 120,
'pool_pre_ping': True
}https://stackoverflow.com/questions/56271116
复制相似问题