2

2 つの SQL テーブル (messages、messages_processed) がありますが、どちらも似ています。messages_processed テーブルには、メッセージ 1 よりも 1 つの列が多く、他の列のデータ型/構造は両方で同じです。特定のユーザーのすべてのメッセージ (処理済み/通常) を表示する際に、これら 2 つのテーブルの結合を適用する必要があります。

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内の各SELECTステートメントは同じ数の列を持っている必要があるため、この場合はUNIONを使用できないようです。

于 2012-09-12T07:42:00.823 に答える