UPDATE 표현식 사용
그만큼 update() 대상 테이블 객체의 메소드는 동등한 UPDATE SQL 표현식을 구성합니다.
table.update().where(conditions).values(SET expressions)
그만큼 values()결과 업데이트 개체의 메서드는 UPDATE의 SET 조건을 지정하는 데 사용됩니다. None으로 남겨두면 SET 조건은 명령문의 실행 및 / 또는 컴파일 중에 명령문에 전달 된 매개 변수에서 결정됩니다.
where 절은 UPDATE 문의 WHERE 조건을 설명하는 선택적 표현식입니다.
다음 코드 스 니펫은 학생 테이블에서 '성'열의 값을 'Khanna'에서 'Kapoor'로 변경합니다.
stmt = students.update().where(students.c.lastname == 'Khanna').values(lastname = 'Kapoor')
stmt 객체는 다음과 같이 번역되는 업데이트 객체입니다.
'UPDATE students SET lastname = :lastname WHERE students.lastname = :lastname_1'
바인딩 된 매개 변수 lastname_1 때 대체됩니다 execute()메소드가 호출됩니다. 전체 업데이트 코드는 다음과 같습니다.
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String
engine = create_engine('sqlite:///college.db', echo = True)
meta = MetaData()
students = Table(
'students',
meta,
Column('id', Integer, primary_key = True),
Column('name', String),
Column('lastname', String),
)
conn = engine.connect()
stmt=students.update().where(students.c.lastname=='Khanna').values(lastname='Kapoor')
conn.execute(stmt)
s = students.select()
conn.execute(s).fetchall()
위의 코드는 주어진 스크린 샷에서와 같이 업데이트 작업의 효과를 보여주는 두 번째 행과 함께 다음 출력을 표시합니다.
[
(1, 'Ravi', 'Kapoor'),
(2, 'Rajiv', 'Kapoor'),
(3, 'Komal', 'Bhandari'),
(4, 'Abdul', 'Sattar'),
(5, 'Priya', 'Rajhans')
]
유사한 기능은 다음을 사용하여 얻을 수도 있습니다. update() 아래와 같이 sqlalchemy.sql.expression 모듈의 함수-
from sqlalchemy.sql.expression import update
stmt = update(students).where(students.c.lastname == 'Khanna').values(lastname = 'Kapoor')