isergeevich666
@isergeevich666

Как удалить несколько строк из таблицы?

Всем привет!
В таблице есть несколько столбцов, один из них с датой вида: 2020-09-27T17:00:00.000Z.
Требуется удалить несколько строк со старыми данными за предыдущие дни. Делаю запрос вида:

delete = DayData.query.filter(DayData.date.between('2020-09-27T16:00:00.000Z', '2020-09-28T11:00:00.000Z'))
db.session.delete(delete)
db.session.commit()


Возвращает ошибку:
sqlalchemy.orm.exc.UnmappedInstanceError: Class 'flask_sqlalchemy.BaseQuery' is not mapped


При этом, если вместо .filter() использовать .first(), то корректно удаляет у таблицы первую строку.
Помогите, пожалуйста
  • Вопрос задан
  • 1192 просмотра
Пригласить эксперта
Ответы на вопрос 2
isergeevich666
@isergeevich666 Автор вопроса
Нашел решение, надо было через цикл пропустить.
Такой код рабочий:
delete = DayData.query.filter(DayData.date.between('2020-09-27T16:00:00.000Z', '2020-09-28T11:00:00.000Z'))
for i in delete:
    db.session.delete(i)
db.session.commit()
Ответ написан
Комментировать
@alekssamos
Программист любитель
Вместо .all() или .first() можно написать .delete()
DayData.query.filter(DayData.date.between('2020-09-27T16:00:00.000Z', '2020-09-28T11:00:00.000Z')).delete(synchronize_session="fetch")
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы