我有一个表,其中有一个User
表和一个Follow
表。下表有两个外键,指的是跟随的用户id
以及被关注的用户id
。
如果用户要删除他们的帐户,我希望删除下表中的所有记录以及用户记录。我认为这样做的方法是使用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
。
为什么我有这个问题,我该如何解决?感谢。
答案 0 :(得分:4)
onupdate
和ondelete
是ForeignKey
构造函数的参数,而不是Column
构造函数。请参阅http://docs.sqlalchemy.org/en/rel_0_9/core/constraints.html#sqlalchemy.schema.ForeignKey。
Column
构造函数确实有一个onupdate
参数,这就是为什么它似乎有效,但您要找的是ForeignKey
onupdate
和{{1}参数。
它应该是这样的:
ondelete