Учебники

Использование выражения UPDATE

Метод update () для объекта целевой таблицы создает эквивалентное выражение UPDATE SQL.

table.update().where(conditions).values(SET expressions)

Метод values ​​() в результирующем объекте обновления используется для указания условий SET ОБНОВЛЕНИЯ. Если оставить значение None, условия SET определяются по тем параметрам, которые передаются оператору во время выполнения и / или компиляции оператора.

Предложение where является опциональным выражением, описывающим условие WHERE оператора UPDATE.

Следующий фрагмент кода изменяет значение столбца ‘фамилия’ с ‘Ханна’ на ‘Капур’ в таблице учеников –

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, как показано ниже –