亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

一對多關系中的多個外鍵 - SqlAlchemy

一對多關系中的多個外鍵 - SqlAlchemy

寶慕林4294392 2023-07-27 17:52:27
我是 SQL Alchemy 的新手,我需要幫助來實現以下關系:我有兩個表Trends和ClosestTrends,我想聲明兩個一對多關系:表關系在 SQL 中,它將是:ALTER TABLE "closest_trends" ADD FOREIGN KEY ("id_trend_ref") REFERENCES "trends" ("id") ON DELETE CASCADE;ALTER TABLE "closest_trends" ADD FOREIGN KEY ("id_trend_close") REFERENCES "trends" ("id") ON DELETE CASCADE;我嘗試了以下實現:class Trends(Base):? ? __tablename__ = "trends"? ? __table_args__ = (? ? ? ? UniqueConstraint(? ? ? ? ? ? "name", "id_region", "language_iso", name="name_id_region_language"? ? ? ? ),? ? )? ? id = Column(Integer, primary_key=True, index=True, unique=True)? ? .? ? .? ? .? ? closest_trends = relationship("ClosestTrends", backref="Trends")? ?? ? def __str__(self):? ? ? ? return "Trends"class ClosestTrends(Base):? ? __tablename__ = "closest_trends"? ? __table_args__ = (? ? ? ? UniqueConstraint(? ? ? ? ? ? "id_trend_ref", "id_trend_close", name="id_trend_ref_id_trend_close"? ? ? ? ),? ? )? ? id = Column(Integer, primary_key=True, index=True, unique=True)? ? .? ? .? ? .? ??? ? id_trend_ref = Column(? ? ? ? Integer, ForeignKey("trends.id", ondelete="CASCADE"), nullable=False? ? )? ? id_trend_close = Column(? ? ? ? Integer, ForeignKey("trends.id", ondelete="CASCADE"), nullable=False? ? )? ??? ? def __str__(self):? ? ? ? return "ClosestTrends"我無法工作并且收到以下錯誤:sqlalchemy.exc.AmbigouslyForeignKeysError:無法確定關系 Trends.closest_trends 上父/子表之間的聯接條件 - 有多個外鍵路徑鏈接這些表。指定“foreign_keys”參數,提供應被視為包含對父表的外鍵引用的列的列表。有誰知道如何解決這個問題?
查看完整描述

1 回答

?
胡說叔叔

TA貢獻1804條經驗 獲得超8個贊

根據官方網站,我是這樣實現的。

class Trends(Base):

? ? __tablename__ = "trends"

? ? __table_args__ = (

? ? ? ? UniqueConstraint(

? ? ? ? ? ? "name", "id_region", "language_iso", name="name_id_region_language"

? ? ? ? ),

? ? )

? ? id = Column(Integer, primary_key=True, index=True, unique=True)

? ? .

? ? .

? ? .

? ? # closest_trends = relationship("ClosestTrends", backref="Trends")

? ?

? ? def __str__(self):

? ? ? ? return "Trends"


class ClosestTrends(Base):

? ? __tablename__ = "closest_trends"

? ? __table_args__ = (

? ? ? ? UniqueConstraint(

? ? ? ? ? ? "id_trend_ref", "id_trend_close", name="id_trend_ref_id_trend_close"

? ? ? ? ),

? ? )

? ? id = Column(Integer, primary_key=True, index=True, unique=True)

? ? .

? ? .

? ? .

? ??

? ? id_trend_ref = Column(

? ? ? ? Integer, ForeignKey("trends.id", ondelete="CASCADE"), nullable=False

? ? )

? ? id_trend_close = Column(

? ? ? ? Integer, ForeignKey("trends.id", ondelete="CASCADE"), nullable=False

? ? )

? ??

? ? trend_ref = relationship("Trends", foreign_keys=[id_trend_ref])

? ? trend_close = relationship("Trends", foreign_keys=[id_trend_close])


? ? def __str__(self):


查看完整回答
反對 回復 2023-07-27
  • 1 回答
  • 0 關注
  • 241 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號