SQLAlchemy,多个表共享同一模型
我有一些数据,这些数据被分散在多个相同的表里,通常是按时间顺序或者数字范围来分开的。比如,我可能有一个叫做 mytable 的表用来存放当前的数据,还有一个 mytable_2013 表用来存放去年的数据,mytable_2012 表用来存放前年数据,依此类推。
只有当前的表会被写入数据,其他的表只是用来查阅数据的。请问在使用 SQLAlchemy 的时候,有没有办法在使用声明式模型时指定要查询哪个表呢?
2 个回答
10
使用混入(mixins)并通过对象属性来更改表名。
class Node(Base):
__tablename__ = 'node'
nid = Column(Integer, primary_key=True)
uuid = Column(String(128))
vid = Column(Integer)
class Node1(Node):
__tablename__ = 'node_1'
class Node2(Node):
__tablename__ = 'node_2'
5
应要求,重新发布为答案:
请查看这个关于 在SQLAlchemy中映射许多相似表格 的回答,特别是 具体表继承
这一部分。
在你的情况下,当你处理当前数据时,可以只查询 MyTable
,而当你需要查看完整历史记录时,可以对所有表进行多态搜索。