【问题标题】:Dynamically linking to databases using flask-sqlalchemy使用 flask-sqlalchemy 动态链接到数据库
【发布时间】:2019-11-06 16:09:45
【问题描述】:
【问题讨论】:
标签:
python
flask
sqlalchemy
flask-sqlalchemy
【解决方案1】:
在不发布整个代码的情况下,我使用 Flask-SQLalchemy 拥有动态数据库的关键概念是:
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
拥有一个全局数据库注册表
DATABASE_REGISTRY = {}
SESSION_MAKER = db.sessionmaker()
创建数据库引擎并添加到注册表(我在另一个辅助函数中有这个)
engine = db.create_engine(db_uri)
DATABASE_REGISTRY['username'] = { 'engine': engine}
然后动态获取用户数据库,有一个辅助函数
def get_db_session(username):
db_session = SESSION_MAKER(bind=DATABASE_REGISTRY.get(username)['engine'])
return db_session
那么你可以使用:
db_session = get_db_session('user_bob')
bob_query = db_session.query(ATable).all()
别忘了关闭会话
db_session.close()