Ответ 1
Вы можете сделать это,
User.query.filter_by(id=123).delete()
или
User.query.filter(User.id == 123).delete()
Обязательно commit
, чтобы delete()
вступил в силу.
У меня есть таблица 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()
.
Вы можете сделать это,
User.query.filter_by(id=123).delete()
или
User.query.filter(User.id == 123).delete()
Обязательно commit
, чтобы delete()
вступил в силу.
Просто хочу поделиться другим вариантом:
# 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()
Другое возможное решение, особенно если вы хотите, чтобы пакетное удаление
deleted_objects = User.__table__.delete().where(User.id.in_([1, 2, 3]))
session.execute(deleted_objects)
session.commit()