一、说明
Flask 项目使用的配置文件是 config.ini ,示例:
[flask] FLASK_APP=run.py FLASK_ENV=produce FLASK_PORT=8000 SECRET_KEY='' [local] DEBUG=1 DATABASE_URL=mysql://root:[email protected]:3306/database_local SQLALCHEMY_POOL_RECYCLE=3600 [test] DEBUG=1 DATABASE_URL=mysql://root:[email protected]:3306/database_test SQLALCHEMY_POOL_RECYCLE=3600 [produce] DEBUG=0 DATABASE_URL=mysql://root:[email protected]:3306/database_produce SQLALCHEMY_POOL_RECYCLE=600 二、问题描述
flask-sqlalchemy 3.1 版本 SQLALCHEMY_POOL_RECYCLE 配置被移除了,变成如下方式:
SQLALCHEMY_ENGINE_OPTIOnS= { "pool_recycle": 600, } 目前的解决方式是写在读取配置文件的类里面:
import configparser import os cf = configparser.ConfigParser() config_dir = os.path.dirname(os.path.abspath(__file__)) cf.read(os.path.join(config_dir, "config.ini")) class Config: # Flask FLASK_ENV = cf.get("flask", "FLASK_ENV") SECRET_KEY = cf.get("flask", "SECRET_KEY") FLASK_PORT = cf.getint("flask", "FLASK_PORT") DEBUG = True if cf.getint(FLASK_ENV, "DEBUG") else False # SQLALCHEMY SQLALCHEMY_DATABASE_URI = cf.get(FLASK_ENV, "DATABASE_URL") SQLALCHEMY_ENGINE_OPTIOnS= { "pool_recycle": 600 } # 这样就无法区分 local 、test 、produce 环境 但是,这样写会导致一个问题local 、test 、produce 三个环境都使用了相同的 pool_recycle ,不满足需求。请问在 config.ini 里面如何根据不同的环境配置不同的 SQLALCHEMY_ENGINE_OPTIONS(或 pool_recycle)?
请各位大佬指点指点,谢谢。
