2015-08-17 2 views
0

У меня есть таблица, где есть таблица User и таблица Follow. В следующей таблице приведены два внешних ключа, которые относятся к следующему пользователю id и к пользователю, которому следуют id.Ошибка аргумента SQLAlchemy: ondelete undefined

Если пользователь должен был удалить свою учетную запись, я бы хотел, чтобы все записи в следующей таблице были удалены вместе с записью пользователя. То, как я думал, что сделать это с помощью 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') 

Я пытаюсь обновить свою базу данных (с помощью колбовую Migrate/перегонном кубе), однако, я получаю сообщение об ошибке:

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

Так onupdate работает нормально, но не ondelete.

Почему у меня есть эта проблема и как ее решить? Благодарю.

ответ

2

onupdate и ondelete являются параметрами для конструктора ForeignKey, а не конструктора Column. См. http://docs.sqlalchemy.org/en/rel_0_9/core/constraints.html#sqlalchemy.schema.ForeignKey.

Column конструктор имеет параметр onupdate, который почему-то казалось, работать, но то, что вы ищете является ForeignKeyonupdate и ondelete параметров.

Он должен выглядеть следующим образом:

follower = db.Column(db.Integer, db.ForeignKey('accounts.id', onupdate='CASCADE', ondelete='CASCADE')) 
following = ... 
Смежные вопросы