【发布时间】:2010-10-27 20:02:56
【问题描述】:
我有一个 SQLAlchemy ORM 模型,目前看起来有点像这样:
Base = declarative_base()
class Database(Base):
__tablename__ = "databases"
__table_args__ = (
saschema.PrimaryKeyConstraint('db', 'role'),
{
'schema' : 'defines',
},
)
db = Column(String, nullable=False)
role = Column(String, nullable=False)
server = Column(String)
事情是这样的,实际上这个模型存在于多个数据库中,并且在这些数据库中它会存在于多个模式中。对于任何一项操作,我只会使用一个 (database, schema) 元组。
现在,我可以使用这个设置数据库引擎:
Session = scoped_session(sessionmaker())
Session.configure(bind=my_db_engine)
# ... do my operations on the model here.
但我不确定如何在执行时更改 __table_args__ 以使架构成为正确的架构。
【问题讨论】:
-
在进行任何查询之前,您知道所需的数据库和架构吗?
-
否;数据库的名称和模式是来自另一个数据库的另一个模型中的字段。我先找到这些,然后我想将此模型的一个实例与该连接相关联。
-
您找到了可行的解决方案吗?我还有一个包含许多模式的数据库,每个模式都有一组相同的表,我希望能够在查询时或在会话级别设置模式。
标签: python orm sqlalchemy