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
。
为什么我会遇到这个问题,我该如何解决?谢谢。
onupdate
和 ondelete
是 ForeignKey
构造函数的参数,而不是 Column
构造函数的参数。参见 http://docs.sqlalchemy.org/en/rel_0_9/core/constraints.html#sqlalchemy.schema.ForeignKey。
Column
构造函数确实有一个 onupdate
参数,这就是为什么它似乎可以工作的原因,但您正在寻找的是 ForeignKey
onupdate
和 ondelete
参数。
它应该是这样的:
follower = db.Column(db.Integer, db.ForeignKey('accounts.id', onupdate='CASCADE', ondelete='CASCADE'))
following = ...
我有一个 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
。
为什么我会遇到这个问题,我该如何解决?谢谢。
onupdate
和 ondelete
是 ForeignKey
构造函数的参数,而不是 Column
构造函数的参数。参见 http://docs.sqlalchemy.org/en/rel_0_9/core/constraints.html#sqlalchemy.schema.ForeignKey。
Column
构造函数确实有一个 onupdate
参数,这就是为什么它似乎可以工作的原因,但您正在寻找的是 ForeignKey
onupdate
和 ondelete
参数。
它应该是这样的:
follower = db.Column(db.Integer, db.ForeignKey('accounts.id', onupdate='CASCADE', ondelete='CASCADE'))
following = ...