SQL Alchemy的全球引擎的合适之地

问题描述

我不熟悉使用a global variable产生新的数据库会话的概念。我想将settings.py文件导入到manage.py中,以调用使用.env帮助程序库dotenv加载环境变量的方法。但是,由于在settings.py导入manage.py时变量尚未初始化(.env文件名尚未从sys.argv中读取),因此引擎构造行无法停留“在视线范围内”(不言而喻)。我想知道settings.py是否适合此类全局变量?我习惯settings.py仅包含基本类型的字典,没有对象或类。
现在init_db_globs看起来像这样。

# set the default db .env file name
def init_db_globs(db_name='db',env_file_name='.env'):
    # refer to global vars
    global engine,session
    # connection string template
    template_uri = 'postgresql://{}:{}@{}:{}/{}'
    # load env vars
    load_dotenv(env_file_name)
    # load database parameters from env vars
    dbs = {
        'db': {
            # 'var': os.getenv('DB_VAR'),},'db_test': {
            # 'var': os.getenv('DB_VAR_TEST'),}
    }
    uri = template_uri.format(db['user'],db['password'],db['host'],db['port'],db['name'])
    engine = create_engine(uri,params_list)
    # create a configured "Session" class
    Session = orm.sessionmaker(bind=engine)
    # init global session
    session = Session()

# create global vars
session = None
engine = None

应该如何改善?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...