【发布时间】:2015-03-24 05:25:10
【问题描述】:
我正在使用 SQLAlchemy 查询许多类似的表,并将结果合并。这些表是客户信息的行,但是我们当前的数据库对其进行了结构化,以便不同的客户组在他们自己的表中,例如客户端组1、客户端组2、客户端组3:
client_group1:
| id | name | email |
| 1 | john | johnsmith@gmail.com |
| 2 | greg | gregjones@gmail.com |
其他每个表都有相同的列。如果我使用的是 SQLAlchemy declarative_base,我可以为 client_group1 提供一个类,如下所示:
def ClientGroup1(Base):
__tablename__ = 'client_group1'
__table_args__ = {u'schema': 'clients'}
id = Column(Integer, primary_key=True)
name = Column(String(32))
email = Column(String(32))
然后我可以进行如下查询:
session.query(ClientGroup1.name)
但是,如果我使用 union_all 将一堆客户端表合并到一个视口中,例如:
query1 = session.query(ClientGroup1.name)
query2 = session.query(ClientGroup2.name)
viewport = union_all(query1, query2)
然后我不确定如何将视口映射到对象,而是必须使用以下方法访问视口列:
viewport.c.name
有没有办法将视口映射到特定的表结构?特别是考虑到每个类指向不同的__table_name__这一事实
【问题讨论】:
-
您是只读取/查询数据还是创建/更新数据?
-
只是读取/查询,没有计划使用该表来创建/更新目的。
标签: python sqlalchemy