반응형
SQLAlchemy로 row 업데이트하는 방법 으로 여기에서는 많이 사용되는 3가지 방법에 대해서 정리해 본다..
1. update() 함수 사용:
update 함수는 Metadata를 이용해서 테이블 정보를 가져오는 경우 사용할 수 있다.
from sqlalchemy import update
# 업데이트할 테이블 선택
table = User
# 업데이트 조건 설정
where_clause = table.c.id == 1
# 업데이트할 값 설정
values = {"name": "새로운 이름"}
# 업데이트 쿼리 실행
session.execute(update(table).where(where_clause).values(values))
session.commit()
2. Model 객체 수정:
이는 모델 구조를 Class로 생성한 경우 Session의 Query를 이용해서 값을 업데이트 하는 것인데 Query로 가져온 값을 업데이트하여 Commit하는 구조이다.
from sqlalchemy.orm import sessionmaker
# 세션 생성
session = sessionmaker()
# 업데이트할 객체 가져오기
user = session.query(User).filter(User.id == 1).first()
# 값 변경
user.name = "새로운 이름"
# 변경 사항 저장
session.commit()
만약 업데이트할 객체가 있는지 확인한 후에 작업하는 방식은 아래와 같다.
from sqlalchemy.orm import sessionmaker
# 세션 생성
session = sessionmaker()
# 업데이트할 객체 존재 여부 확인
user = session.query(User).filter(User.id == 1).first()
# 객체가 존재하는 경우 업데이트
if user:
# 값 변경
user.name = "새로운 이름"
# 변경 사항 저장
session.commit()
else:
print("업데이트할 객체가 없습니다.")
3. ORM 쿼리 사용:
앞써 진행한 2. Model 방식과 비슷한 방식이지만, 여기에서는 쿼리 시점에 업데이트를 진행할 수 있는 방식이다.
from sqlalchemy import update
# 업데이트할 테이블 선택
table = User
# 업데이트 조건 설정
where_clause = table.c.id == 1
# 업데이트할 값 설정
values = {"name": "새로운 이름"}
# 업데이트 쿼리 실행
session.query(table).filter(where_clause).update(values=values)
session.commit()
더 복잡한 업데이트 작업은 SQLAlchemy 문서를 참고하면 보다 자세한 방법들을 이해 할 수 있다.
참조:
https://docs.sqlalchemy.org/20/tutorial/data_update.html
https://stackoverflow.com/questions/9667138/how-to-update-sqlalchemy-row-entry
반응형
'Python' 카테고리의 다른 글
Python - 함수 타입 지정, 타입 힌트(Type Hint)에 대해 (0) | 2024.02.20 |
---|---|
Python - HTTPX/Requsets Connection reset by peer 문제 해결하기 (0) | 2024.02.20 |
Python - SQLAlchemy 검색 결과 (exists/ not exists)있는지/없는지 확인 (0) | 2024.02.19 |
Python - 임포트 함수 참조 순서 (0) | 2024.02.19 |
Python - Uvicorn/Gunicorn Connection reset by peer를 해결할 수 있는 방법 (0) | 2024.02.19 |