我有以下config.py:
SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or 'sqlite:///' + os.path.join(basedir, 'master.db')
SQLALCHEMY_BINDS = {
'project0': 'sqlite:///' + os.path.join(basedir, 'project0.db')
'project1': 'sqlite:///' + os.path.join(basedir, 'project1.db')
'project2': 'sqlite:///' + os.path.join(basedir, 'project2.db')
}我需要我的用户在登录时选择一个项目数据库。我希望将此选择存储在某个变量中,并将其传递给模型类。
class Punchlist(db.Model,choice):
__bind_key__ = choice将使用__init.py中的默认数据库初始化db对象:
app.config.from_object(Config)
db = SQLAlchemy(app)将此选择与用户关联的最佳方式是什么?
发布于 2021-04-23 20:12:50
您可以创建一个包含bind_key变量的基类。例如:
class Base(db.Model):
__abstract__ = True
def __init__(self, **kwargs):
self.bind_key = kwargs.pop('bind_key') if kwargs.get('bind_key') else 'project0'
db.Model.metadata.tables[self.__tablename__].info['bind_key'] = self.bind_key
super(Base, self).__init__(**kwargs)派生类
class PunchList(Base):
__tablename__ = 'Punchlist'初始化PunchList类
punch_list_0 = PunchList()
punch_list_1 = PunchList(bind_key='project1')
punch_list_2 = PunchList(bind_key='project2')https://stackoverflow.com/questions/56303013
复制相似问题