我試圖創建2個使用SQLAlchemy模型,它們在結構上是相同的,但用途不同,Whitelist
和Blacklist
也參考Magazine
(未顯示)。他們都喜歡競選的一個實例(比如說一個政治競選),而這個競選又有一個Politician
模型(也沒有顯示)。sqlalchemy模式:沒有唯一的約束匹配給定的鍵給定的表
我想象的Whitelist
/Blacklist
是多方面的:1至Campaign
,因爲可能有多個白色/對黑名單,但在運行遷移我得到sqlalchemy.exc.ProgrammingError: (ProgrammingError) there is no unique constraint matching given keys for referenced table "campaigns"
時。還需要有從Campaign
到Politician
的M:1。
有人可以解釋爲什麼這是由於白名單和黑名單在單獨的表上造成一個唯一的約束錯誤嗎?另外,我怎樣才能使這個關係模式起作用?
class Campaign(Base):
__tablename__ = "campaigns"
id = Column(Integer, primary_key=True, nullable=False)
politician_id = Column(Integer, ForeignKey('politician.id'), nullable=False)
description = Column(Text, nullable=True)
class Whitelist(Base):
__tablename__ = "whitelist"
id = Column(Integer, primary_key=True, nullable=False)
campaign_id = Column(Integer, ForeignKey('campaign.id'), nullable=False)
magazine_id = Column(Integer, ForeignKey('magazine.id'), nullable=False)
class Blacklist(Base):
__tablename__ = "blacklist"
id = Column(Integer, primary_key=True, nullable=False)
campaign_id = Column(Integer, ForeignKey('campaign.id'), nullable=False)
magazine_id = Column(Integer, ForeignKey('magazine.id'), nullable=False)
我看不出爲什麼表A - >表B(M:1),表B - >表C(M:1)是非法的。 – 2015-05-13 10:04:51