SQLAchemy中处理两张表之间存在多个外键的情况

本文详细解析了在Flask应用中使用SQLAlchemy处理多对一关系时,遇到的AmbiguousForeignKeysError错误。当同一子表的两个字段分别作为不同父表的外键时,如何正确配置foreign_keys参数以避免混淆。

在Flask的开发中,我们势必会遇到两张表之间存在多个外键的情况。例如,现在有两张表,一张表是User,另一张表是Article。一篇文章的作者author_id可以设置外键关联User表,同时文章的审稿人reviewer_id也可以设置外键关联User表。当我们以SQLAchemy多对一(many to one)的设计方法来添加relationship关系映射时,程序会抛出一个AmbiguousForeignKeysError错误,这篇文章我们就来解决这个问题。

出现Error的代码写法

先来看以SQLAchemy多对一的常规设计方法处理这个问题时我的代码写法。

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

class User(db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True)  
    email = db.Column(db.String(64), nullable=False, unique=True)  
    name = db.Column(db.String(32), nullable=False)  
    ...  
    
class Article(db.Model):
    __tablename__ = 'articles'
    id = db.Column(db.Integer, primary_key=True)  
    title = db
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值