SQLAlchemy同表多对多关联含额外数据报错求助
解决SQLAlchemy AmbiguousForeignKeysError问题
你遇到的问题是因为User和RefData表之间存在两个外键关联(referral_id和referee_id都指向user.id),SQLAlchemy无法自动推断User的referees和referrals关系应该对应哪个外键路径,所以抛出了歧义错误。
只需要在定义关系时,通过foreign_keys参数明确指定关联的外键列即可解决:
修改后的User表代码
class User(UserMixin, db.Model): __tablename__ = 'user' # 指定referees关联RefData的referral_id外键 referees = db.relationship( 'RefData', back_populates='referral', foreign_keys='[RefData.referral_id]', lazy='dynamic' ) # 指定referrals关联RefData的referee_id外键 referrals = db.relationship( 'RefData', back_populates='referee', foreign_keys='[RefData.referee_id]', lazy='dynamic' )
修改后的RefData表代码
class RefData(UserMixin, db.Model): __tablename__ = 'ref_data' referral_id = db.Column(UUID(as_uuid=True), db.ForeignKey('user.id'), primary_key=True) referral = db.relationship( 'User', back_populates='referrals', foreign_keys=[referral_id] ) referee_id = db.Column(UUID(as_uuid=True), db.ForeignKey('user.id'), primary_key=True) referee = db.relationship( 'User', back_populates='referees', foreign_keys=[referee_id] )
这样明确指定每个关系对应的外键后,SQLAlchemy就能准确识别关联路径,消除歧义错误。
内容的提问来源于stack exchange,提问作者mimic
相关产品推荐
相关产品推荐

