我有一个带有一些数据逻辑的模块models.py
:
db = PostgresqlDatabase(database='database', user='user')
# models logic
和实际与数据库交互的烧瓶应用程序:
from models import db, User, ...
但我想从flask app中的一个配置文件初始化所有设置:
所以我可以将db
与其他内容分开(我需要这个来访问db
中的模块变量models
):
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
但似乎有点难看。复制导入,模块内容的不同用法..
有没有更好的方法来处理这种情况?
答案 0 :(得分:0)
我建议使用1级间接,这样你的代码就会变成这样:
import const
import runtime
def foo():
runtime.db.execute("SELECT ... LIMIT ?", (..., const.MAX_ROWS))
你得到:
const
要在runtime
上获取丰富的API,请在导入时使用"替换模块和对象#34;技巧(见__getattr__ on a module)