Python 使用Alchemy动态链接到数据库

Python 使用Alchemy动态链接到数据库,python,flask,sqlalchemy,flask-sqlalchemy,Python,Flask,Sqlalchemy,Flask Sqlalchemy,我正在构建一个api来创建用户,每个用户都会得到一个新的数据库。我想把Alchemy链接到创建的数据库。有没有一个简单的方法 我还想说明的是,每个用户获得自己的数据库的原因是为了满足法规要求,所以重新安排模式,使所有内容都在一个数据库中不是一个选项 我正在考虑使用这里描述的vanilla sqlalchemy:但我想确保我没有其他选择。在不发布全部代码的情况下,我使用Flask sqlalchemy创建动态数据库的关键概念是: from flask_sqlalchemy import SQLAl

我正在构建一个api来创建用户,每个用户都会得到一个新的数据库。我想把Alchemy链接到创建的数据库。有没有一个简单的方法

我还想说明的是,每个用户获得自己的数据库的原因是为了满足法规要求,所以重新安排模式,使所有内容都在一个数据库中不是一个选项


我正在考虑使用这里描述的vanilla sqlalchemy:但我想确保我没有其他选择。

在不发布全部代码的情况下,我使用Flask sqlalchemy创建动态数据库的关键概念是:

from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
拥有一个全局数据库注册表

DATABASE_REGISTRY = {}
SESSION_MAKER = db.sessionmaker()
创建数据库引擎并添加到注册表(我在另一个助手函数中有此功能)

然后,为了动态地获取用户数据库,需要一个helper函数

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()

谢谢,这很有帮助。