Как удалить все строки в одной таблице с помощью Flask-SQLAlchemy?
Ищу что-то вроде этого:
>>> users = models.User.query.all()
>>> models.db.session.delete(users)
# but it errs out: UnmappedInstanceError: Class '__builtin__.list' is not mapped
python
sqlalchemy
flask-sqlalchemy
SeanPlusPlus
источник
источник
models.User.query().delete()
Model.query.filter(Model.some_id == some_id, Model.other_id.in_(other_ids).delete()
Flask-SQLAlchemy
попробуйтеUser.query.delete()
какquery
объект, так как объект BaseQuery не вызывается. Проверено и проверено.Ответ DazWorrall точен. Вот вариант, который может быть полезен, если ваш код структурирован иначе, чем OP:
Также не забывайте, что удаление не вступит в силу, пока вы не зафиксируете, как в этом фрагменте:
try: num_rows_deleted = db.session.query(Model).delete() db.session.commit() except: db.session.rollback()
источник
Flask-Sqlalchemy
Удалить все записи
#for all records db.session.query(Model).delete() db.session.commit()
Удалена одна строка
здесь БД - объект класса Flask-SQLAlchemy. Он удалит из него все записи, и если вы хотите удалить определенные записи, тогда попробуйте
filter
предложение в запросе. напр.#for specific value db.session.query(Model).filter(Model.id==123).delete() db.session.commit()
Удалить отдельную запись по объекту
record_obj = db.session.query(Model).filter(Model.id==123).first() db.session.delete(record_obj) db.session.commit()
https://flask-sqlalchemy.palletsprojects.com/en/2.x/queries/#deleting-records
источник