Подтвердить что ты не робот

Flask-SQLAlchemy, как удалить все строки в одной таблице

Как удалить все строки в одной таблице с помощью Flask-SQLAlchemy?

Ищете что-то вроде этого:

>>> users = models.User.query.all()
>>> models.db.session.delete(users)

# but it errs out: UnmappedInstanceError: Class '__builtin__.list' is not mapped
4b9b3361

Ответ 1

Попробуйте delete:

models.User.query.delete()

Из документов: Returns the number of rows deleted, excluding any cascades.

Ответ 2

Ответ DazWorrall - это точка. Здесь вариант, который может быть полезен, если ваш код структурирован иначе, чем OP:

num_rows_deleted = db.session.query(Model).delete()

Кроме того, не забывайте, что удаление не вступит в силу до тех пор, пока вы не зафиксируете, как в этом фрагменте:

try:
    num_rows_deleted = db.session.query(Model).delete()
    db.session.commit()
except:
    db.session.rollback()

Ответ 3

Колба-SQLAlchemy

#for all records
db.session.query(Model).delete()
db.session.commit()

здесь DB - объект класса Flask-SQLAlchemy. Он удалит все записи из него, и если вы хотите удалить определенные записи, попробуйте предложение filter в запросе. напр.

#for specific value
db.session.query(Model).filter(Model.id==123).delete()
db.session.commit()