SQLAlchemy argument error: ondelete undefined

SQLAlchemy argument error: ondelete undefined

我有一个 table,其中有一个 User table 和一个 Follow table。 follow table 有两个外键,分别指向关注的用户 id 和被关注的用户 id.

如果用户要删除他们的帐户,我希望以下 table 中的所有记录与用户记录一起删除。我想这样做的方法是像这样使用 onupdate='CASCASE', ondelete='CASCASE'

follower = db.Column(db.Integer, db.ForeignKey('accounts.id'), onupdate='CASCADE', ondelete='CASCADE')
following = db.Column(db.Integer, db.ForeignKey('accounts.id'), onupdate='CASCADE', ondelete='CASCADE')

我尝试更新我的数据库(使用 Flask-Migrate/Alembic)但是,我收到错误:

sqlalchemy.exc.ArgumentError: Unknown arguments passed to Column: ['ondelete']

所以看起来 onupdate 工作正常但 ondelete

为什么我会遇到这个问题,我该如何解决?谢谢。

onupdateondeleteForeignKey 构造函数的参数,而不是 Column 构造函数的参数。参见 http://docs.sqlalchemy.org/en/rel_0_9/core/constraints.html#sqlalchemy.schema.ForeignKey

Column 构造函数确实有一个 onupdate 参数,这就是为什么它似乎可以工作的原因,但您正在寻找的是 ForeignKey onupdateondelete参数。

它应该是这样的:

follower = db.Column(db.Integer, db.ForeignKey('accounts.id', onupdate='CASCADE', ondelete='CASCADE'))
following = ...