【发布时间】:2021-07-18 18:55:27
【问题描述】:
我使用flask-SQLAlchemy 创建数据库,但出现此错误:
"sqlalchemy.exc.NoForeignKeysError sqlalchemy.exc.NoForeignKeysError:无法确定关系 User.refund 上的父/子表之间的连接条件 - 没有链接这些表的外键。确保引用列与 ForeignKey 或 ForeignKeyConstraint 相关联,或指定 'primaryjoin' 表达式。"
我有一个User 模型架构定义为:
class User(UserMixin, db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(64), unique=True, index=True)
username = db.Column(db.String(64), unique=True, index=True)
role_id = db.Column(db.Integer, db.ForeignKey('roles.id'))
password_hash = db.Column(db.String(128))
confirmed = db.Column(db.Boolean, default=False)
name = db.Column(db.String(64))
location = db.Column(db.String(64))
about_me = db.Column(db.Text())
member_since = db.Column(db.DateTime(), default=datetime.utcnow)
last_seen = db.Column(db.DateTime(), default=datetime.utcnow)
avatar_hash = db.Column(db.String(32))
posts = db.relationship('Post', backref='author', lazy='dynamic')
comments = db.relationship('Comment', backref='author', lazy='dynamic')
purchases = db.relationship("Purchase", backref='author', lazy='dynamic')
refund = db.relationship("Refund", backref='author', lazy='dynamic')
class Refund(db.Model):
__tablename__ = "Refund"
id = db.Column(db.Integer, primary_key=True)
purchase_id = db.Column(db.Integer, db.ForeignKey("Purchase.id"))
medicine_id = db.Column(db.Integer, db.ForeignKey("inventory.medicine_id"))
timestamp = db.Column(db.DateTime, index=True, default=datetime.utcnow)
为什么会出现这个错误?
【问题讨论】:
-
您在
db.relationship()调用中看到了其他表。Refund模型与User表正确关联。因此,您遇到的错误很可能源于您如何创建与其他模型之间的关系。 -
也许您希望在
Refund模型中对users进行FK?
标签: python sqlalchemy