Sqlalchemy两个相似表的联合

时间:2012-09-12 06:24:27

标签: sqlalchemy

我有两个sql表(messages,messages_processed),两者都相似。 messages_processed表有一列比消息一列,其他列数据类型/结构在两者中都相同。在显示特定用户的所有消息(已处理/常规)时,应应用这两个表的并集。

Class Message(object):
  def __init__(self, sender_id, text, user_id):
     self.sender_id = sender_id
     self.text = text
     self.user_id = user_id
     self.categories = [] #(N:M relation)
Class MessageProcessed(object):
  def __init__(self, sender_id, text, user_id, action):
     self.sender_id = sender_id
     self.text = text
     self.user_id = user_id
     self.categories = [] #(N:M relation)
     self.action = action

我无法改变表的现有结构。我需要做一些这样的事情,它将导致具有N:M映射的orm对象数组。

session.query(Message).filter(Message.user_id==12)
                      .union(session.query(MessageProcessed)
                                    .filter(MessageProcessed.user_id==12)).all()

1 个答案:

答案 0 :(得分:0)

看起来你不能在你的情况下使用UNION,因为UNION中的每个SELECT语句必须具有相同的列数。