问题描述
我不熟悉使用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 (将#修改为@)