SQLAlchemy: cascade delete

后端 未结 9 1587
星月不相逢
星月不相逢 2020-11-28 01:07

I must be missing something trivial with SQLAlchemy\'s cascade options because I cannot get a simple cascade delete to operate correctly -- if a parent element is a deleted,

9条回答
  •  广开言路
    2020-11-28 01:18

    Answer by Stevan is perfect. But if you are still getting the error. Other possible try on top of that would be -

    http://vincentaudebert.github.io/python/sql/2015/10/09/cascade-delete-sqlalchemy/

    Copied from the link-

    Quick tip if you get in trouble with a foreign key dependency even if you have specified a cascade delete in your models.

    Using SQLAlchemy, to specify a cascade delete you should have cascade='all, delete' on your parent table. Ok but then when you execute something like:

    session.query(models.yourmodule.YourParentTable).filter(conditions).delete()
    

    It actually triggers an error about a foreign key used in your children tables.

    The solution I used it to query the object and then delete it:

    session = models.DBSession()
    your_db_object = session.query(models.yourmodule.YourParentTable).filter(conditions).first()
    if your_db_object is not None:
        session.delete(your_db_object)
    

    This should delete your parent record AND all the children associated with it.

提交回复
热议问题