SQLAlchemy,多个表共享同一模型

9 投票
2 回答
10153 浏览
提问于 2025-04-18 18:12

我有一些数据,这些数据被分散在多个相同的表里,通常是按时间顺序或者数字范围来分开的。比如,我可能有一个叫做 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,而当你需要查看完整历史记录时,可以对所有表进行多态搜索。

撰写回答