Używanie wyrażenia UPDATE
Plik update() Metoda na docelowym obiekcie tabeli konstruuje równoważne wyrażenie SQL UPDATE.
table.update().where(conditions).values(SET expressions)
Plik values()Metoda na wynikowym obiekcie aktualizacji jest używana do określenia warunków SET dla UPDATE. W przypadku pozostawienia wartości Brak warunki SET są określane na podstawie parametrów przekazanych do instrukcji podczas wykonywania i / lub kompilacji instrukcji.
Klauzula where jest wyrażeniem opcjonalnym opisującym warunek WHERE instrukcji UPDATE.
Poniższy fragment kodu zmienia wartość kolumny „nazwisko” z „Khanna” na „Kapoor” w tabeli uczniów -
stmt = students.update().where(students.c.lastname == 'Khanna').values(lastname = 'Kapoor')
Obiekt stmt jest obiektem aktualizacji, który przekłada się na -
'UPDATE students SET lastname = :lastname WHERE students.lastname = :lastname_1'
Powiązany parametr lastname_1 zostanie zastąpiony, gdy execute()wywoływana jest metoda. Pełny kod aktualizacji znajduje się poniżej -
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()
Powyższy kod wyświetla następujące dane wyjściowe z drugim wierszem pokazującym efekt operacji aktualizacji, jak na podanym zrzucie ekranu -
[
(1, 'Ravi', 'Kapoor'),
(2, 'Rajiv', 'Kapoor'),
(3, 'Komal', 'Bhandari'),
(4, 'Abdul', 'Sattar'),
(5, 'Priya', 'Rajhans')
]
Należy pamiętać, że podobną funkcjonalność można również osiągnąć, używając update() funkcja w module sqlalchemy.sql.expression, jak pokazano poniżej -
from sqlalchemy.sql.expression import update
stmt = update(students).where(students.c.lastname == 'Khanna').values(lastname = 'Kapoor')