如何解决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 举报,一经查实,本站将立刻删除。