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