0
我有一個消息回覆其他消息的模型。相同的message_id可以在多個帳戶中。我無法找到一種方法將帳戶和message_id作爲複合關鍵字並在關係中使用它。使用sqlalchemy組合鍵的自引用關係
我有這個迄今爲止得到:
class Message(Base):
__tablename__ = 'messages'
id = Column(String(20), primary_key=True)
account = Column(String(20))
message_id = Column(String(20))
in_reply_to_message_id = Column(String(20))
__table_args__ = (ForeignKeyConstraint([account, in_reply_to_message_id],
['messages.account', 'messages.message_id']),
{})
parent_message = db.relationship('Message', remote_side=[message_id],
primaryjoin=('Message.account==Message.account and Message.in_reply_to_message_id==Message.message_id'),
backref=backref('child_messages'), uselist=False)
當我嘗試做message.parent_message
,生成的查詢是在where子句中缺少帳戶比較 -
WHERE %(param_1)s = messages.message_id
而且我得到警告:
SAWarning: Multiple rows returned with uselist=False for lazily-loaded attribute 'Tweet.parent_tweet'
% self.parent_property)
如何建立關係以妥善保管帳戶在這種情況下組合鍵的一部分。