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

Как удалить запись по id в Flask-SQLAlchemy

У меня есть таблица users в моей базе данных MySql. В этой таблице есть поля id, name и age.

Как я могу удалить какую-нибудь запись с помощью id?

Теперь я использую следующий код:

user = User.query.get(id)
db.session.delete(user)
db.session.commit()

Но я не хочу делать какие-либо запросы перед операцией удаления. Есть какой-либо способ сделать это? Я знаю, что могу использовать db.engine.execute("delete from users where id=..."), но я бы хотел использовать метод delete().

4b9b3361

Ответ 1

Вы можете сделать это,

User.query.filter_by(id=123).delete()

или

User.query.filter(User.id == 123).delete()

Обязательно commit, чтобы delete() вступил в силу.

Ответ 2

Просто хочу поделиться другим вариантом:

# mark two objects to be deleted
session.delete(obj1)
session.delete(obj2)

# commit (or flush)
session.commit()

http://docs.sqlalchemy.org/en/latest/orm/session_basics.html#deleting

В этом примере следующие коды должны работать нормально:

obj = User.query.filter_by(id=123).one()
session.delete(obj)
session.commit()

Ответ 3

Другое возможное решение, особенно если вы хотите, чтобы пакетное удаление

deleted_objects = User.__table__.delete().where(User.id.in_([1, 2, 3]))
session.execute(deleted_objects)
session.commit()