Flask SQLAlchemy массовое удаление записей - PullRequest
0 голосов
/ 03 мая 2020

Я новичок в SQLAlchemy и не могу понять, как удалить несколько записей одновременно. В документации говорится, что это то же самое, что и .add (), но вместо этого используется .delete (). Это работает, если я добавляю .first (), однако я не могу использовать .all (), иначе я получаю следующую ошибку:

sqlalchemy.orm.exc.UnmappedInstanceError: Class 'builtins.list' is not mapped

Вот код:

delete = Skilljoin.query.filter_by(staffid=30).all()
db.session.delete(delete)
db.session.commit()

Заранее спасибо.

1 Ответ

2 голосов
/ 03 мая 2020

Skilljoin.query.filter_by(staffid=30).all() возвращает список результатов запроса.

Чтобы удалить, используйте:

skilljoins = Skilljoin.query.filter_by(staffid=30).all()
for skilljoin in skilljoins :
    db.session.delete(skilljoin)
db.session.commit()

или

Skilljoin.query.filter_by(staffid=30).delete() 

( https://docs.sqlalchemy.org/en/13/orm/query.html#sqlalchemy .orm.query.Query.delete )

...