내가 가진 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()