Verwenden des UPDATE-Ausdrucks

Das update() Die Methode für das Zieltabellenobjekt erstellt einen entsprechenden UPDATE-SQL-Ausdruck.

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

Das values()Die Methode für das resultierende Aktualisierungsobjekt wird verwendet, um die SET-Bedingungen des UPDATE anzugeben. Wenn Sie Als Keine belassen, werden die SET-Bedingungen aus den Parametern bestimmt, die während der Ausführung und / oder Kompilierung der Anweisung an die Anweisung übergeben werden.

Die where-Klausel ist ein optionaler Ausdruck, der die WHERE-Bedingung der UPDATE-Anweisung beschreibt.

Das folgende Codefragment ändert den Wert der Spalte 'Nachname' in der Schülertabelle von 'Khanna' in 'Kapoor' -

stmt = students.update().where(students.c.lastname == 'Khanna').values(lastname = 'Kapoor')

Das stmt-Objekt ist ein Aktualisierungsobjekt, das übersetzt in -

'UPDATE students SET lastname = :lastname WHERE students.lastname = :lastname_1'

Der gebundene Parameter lastname_1 wird ersetzt, wenn execute()Methode wird aufgerufen. Der vollständige Update-Code ist unten angegeben -

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

Der obige Code zeigt die folgende Ausgabe mit der zweiten Zeile an, die den Effekt des Aktualisierungsvorgangs wie im angegebenen Screenshot zeigt -

[
   (1, 'Ravi', 'Kapoor'),
   (2, 'Rajiv', 'Kapoor'),
   (3, 'Komal', 'Bhandari'),
   (4, 'Abdul', 'Sattar'),
   (5, 'Priya', 'Rajhans')
]

Beachten Sie, dass ähnliche Funktionen auch mit verwendet werden können update() Funktion im Modul sqlalchemy.sql.expression wie unten gezeigt -

from sqlalchemy.sql.expression import update
stmt = update(students).where(students.c.lastname == 'Khanna').values(lastname = 'Kapoor')