Programing

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

lottogame 2020. 8. 23. 09:37
반응형

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()

참고 URL : https://stackoverflow.com/questions/27158573/how-to-delete-a-record-by-id-in-flask-sqlalchemy

반응형