我有以下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
该db对象将使用__init.py中的默认db初始化:
app.config.from_object(Config)
db = SQLAlchemy(app)
哪种方法可以将此选择与用户相关联?
答案 0 :(得分:0)
您可以创建一个包含 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')