Без публикации всего кода ключевые концепции, которые я использую с помощью 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}
Затем, чтобы динамически получить пользователь db, есть вспомогательная функция
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()