博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
flask sqlalchemy多个外键引用同张表报错sqlalchemy.exc.AmbiguousForeignKeysError
阅读量:6709 次
发布时间:2019-06-25

本文共 1681 字,大约阅读时间需要 5 分钟。

hot3.png

模型定义:

class Follow(db.Model):    __tablename__ = 'tb_follow'    id = db.Column(db.Integer, primary_key=True)    userid = db.Column(db.Integer, db.ForeignKey('tb_user.id'), nullable=False)    followid = db.Column(db.Integer, db.ForeignKey('tb_user.id'), nullable=False)    createTime = db.Column(db.DateTime, nullable=False, default=datetime.datetime.now)    user = db.relationship('User')    follower = db.relationship('User')    def __init__(self, userid, followid):        self.userid = userid        self.followid = followid    def __repr__(self):        return '
' % (self.user, self.follower, self.createTime)

报错:sqlalchemy.exc.AmbiguousForeignKeysError: Could not determine join condition between parent/child tables on relationship

model中有两个外键引用同一个user表,在db.relationship()时无法确定如何对应。所以,需要借助relationship函数其它参数。如foreign_keys=[xxx]

故模型改为:

class Follow(db.Model):    __tablename__ = 'tb_follow'    id = db.Column(db.Integer, primary_key=True)    userid = db.Column(db.Integer, db.ForeignKey('tb_user.id'), nullable=False)    followid = db.Column(db.Integer, db.ForeignKey('tb_user.id'), nullable=False)    createTime = db.Column(db.DateTime, nullable=False, default=datetime.datetime.now)    user = db.relationship('User', foreign_keys=userid)    follower = db.relationship('User', foreign_keys=followid)    def __init__(self, userid, followid):        self.userid = userid        self.followid = followid    def __repr__(self):        return '
' % (self.user, self.follower, self.createTime)

关键:

user = db.relationship('User', foreign_keys=userid)follower = db.relationship('User', foreign_keys=followid)

 

转载于:https://my.oschina.net/wtzheng/blog/1816655

你可能感兴趣的文章
Linux操作系统基础知识
查看>>
28.C#--方法的简单调用练习
查看>>
HTML5 服务器发送事件
查看>>
MVC分页
查看>>
Linux磁盘分区
查看>>
渠道统计比较的优缺点
查看>>
实现MySQL分库分表备份的脚本
查看>>
Confluence 6 找到你的支持识别代码(SEN)
查看>>
Confluence 6 配置手动备份
查看>>
网络互连
查看>>
Linux系统,分区错误,根分区磁盘满了
查看>>
员工如何在人工智能时代证明其IT工作价值
查看>>
DevExpress 小贴士
查看>>
在流行的PHP库中发现了用于创建PDF文件的严重安全漏洞
查看>>
仿百思不得其姐项目开发(粗略笔记,后期规范排版和更新)
查看>>
iOS开发之网络编程--小文件下载
查看>>
Nginx配置之location模块和proxy模块
查看>>
Convert SVG to PDF by using iText in Java(ZT)
查看>>
Mybatis分页插件 - PageHelper很好很强大,转载
查看>>
Java,php,Python连接并操作redis实例
查看>>