SQLAlchemy参数错误:ondelete undefined

时间:2015-08-17 18:52:48

标签: python database flask sqlalchemy flask-sqlalchemy

我有一个表,其中有一个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

为什么我有这个问题,我该如何解决?感谢。

1 个答案:

答案 0 :(得分:4)

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

Column构造函数确实有一个onupdate参数,这就是为什么它似乎有效,但您要找的是ForeignKey onupdate和{{1}参数。

它应该是这样的:

ondelete