[python] Flask-SQLAlchemy에서 ID로 레코드를 삭제하는 방법

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


답변