programing

Flask-SQ에서 ID별 레코드를 삭제하는 방법라헬미

prostudy 2022. 4. 1. 18:25
반응형

Flask-SQ에서 ID별 레코드를 삭제하는 방법라헬미

있습니다usersMySql 데이터베이스의 테이블.이 테이블은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()

sqlalchemy 1.4(2.0 스타일)에서는 다음과 같이 할 수 있다.

from sqlalchemy import select, update, delete, values

sql1 = delete(User).where(User.id.in_([1, 2, 3]))
sql2 = delete(User).where(User.id == 1)

db.session.execute(sql1)
db.session.commit()

또는

u = db.session.get(User, 1)
db.session.delete(u)
db.session.commit()

내 생각에는 select, update, delete를 사용하는 것이 더 읽기 쉽다.스타일 비교 1.0 대 2.0은 여기에서 확인할 수 있다.

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

반응형