2

我有两个 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()
4

1 回答 1

0

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

于 2012-09-12T07:42:00.823 回答