[英]Cross module variable sharing without duplicating imports
我有一个带有一些数据逻辑的模块models.py
:
db = PostgresqlDatabase(database='database', user='user')
# models logic
实际上与数据库交互的烧瓶应用程序:
from models import db, User, ...
但是我想从flask应用程序中的一个配置文件移动所有设置的初始化:
因此,我可以将导入db
与其他内容分开(我需要使用它来访问models
模块变量db
):
import models
from models import User, ...
app.config.from_object(os.environ['APP_SETTINGS'])
models.db = PostgresqlDatabase(database=app.config['db'],
user=app.config['db'])
并使用更多的db
作为models.db
但似乎有点丑陋。 复制导入,使用不同的模块材料
有什么更好的方法来处理这种情况吗?
我建议使用1级间接访问,以便您的代码如下所示:
import const
import runtime
def foo():
runtime.db.execute("SELECT ... LIMIT ?", (..., const.MAX_ROWS))
你得到:
const
清晰分离 要在runtime
获取丰富的API,请使用“在导入时用对象替换模块”技巧(请参见模块上的__getattr__ )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.