我在MySQL数据库中有两个表,我想合并成另一个数据库中的一个表。这些表由四列组成,它们共同构成一个复合主键。下面是其中一个表的示例:
class GamesATP(Base):
__tablename__ = "games_atp"
__table_args__ = {"schema": "oncourt",
"extend_existing": True}
ID_T_G = Column(Integer, ForeignKey("oncourt.tours_atp.ID_T"), primary_key=True)
ID_R_G = Column(Integer, ForeignKey("oncourt.rounds.ID_R"), primary_key=True)
ID1_G = Column(Integer, ForeignKey("oncourt.players_atp.ID_P"), primary_key=True)
ID2_G = Column(Integer, ForeignKey("oncourt.players_atp.ID_P"), primary_key=True)
除了atp
= wta
和ATP
= WTA
之外,第二张表是相同的。
我的想法是将两个表中的数据附加到具有新列tour_id
的新表中,其中新列0
为atp
,1
为{{ 1}}。我还将添加一个新的wta
列作为主键。
然后我想建立一个追加查询,我需要将两个表之间的关系定义为2x match_id
s,如下所示:
ForeignKeyConstraint
这给了我错误:
class MatchesBLG(Base):
__tablename__ = "matches_blg"
__table_args__ = (
ForeignKeyConstraint(
["tour_id", "tournament_id", "round_id", "p1_id", "p2_id"],
[
"0",
"oncourt.games_atp.ID_T_G",
"oncourt.games_atp.ID_R_G",
"oncourt.games_atp.ID1_G",
"oncourt.games_atp.ID2_G",
]
),
ForeignKeyConstraint(
["tour_id", "tournament_id", "round_id", "p1_id", "p2_id"],
[
"1",
"oncourt.games_wta.ID_T_G",
"oncourt.games_wta.ID_R_G",
"oncourt.games_wta.ID1_G",
"oncourt.games_wta.ID2_G",
]
),
{"schema": "belgarath", "extend_existing": True},
)
match_id = Column(Integer, primary_key=True)
tour_id = Column(Integer, index=True)
tournament_id = Column(Integer, index=True)
round_id = Column(Integer, index=True)
p1_id = Column(Integer, index=True)
p2_id = Column(Integer, index=True)
我有一个偷偷摸摸的怀疑,我不应该在同一个表中有两个约束,但是我在这里没有深度。创建联接的最佳方法是什么?