使用 UPDATE 表示式



目標表物件的update()方法構成了同等的 UPDATE SQL 表示式。

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

結果更新物件上的values()方法用於指定 UPDATE 的 SET 條件。如果留空,則 SET 條件從執行和/或編譯該語句時傳遞給該語句的引數中確定。

where 子句是一個描述 UPDATE 語句 WHERE 條件的可選表示式。

以下程式碼段將 students 表中“lastname”列的值從“Khanna”更改為“Kapoor” −

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

stmt 物件是一個更新物件,可轉換成 −

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

呼叫execute()方法時,將替換繫結引數lastname_1。完整的更新程式碼如下 −

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 Operation

請注意,還可以使用 sqlalchemy.sql.expression 模組中的update()函式實現類似的功能,如下所示 −

from sqlalchemy.sql.expression import update
stmt = update(students).where(students.c.lastname == 'Khanna').values(lastname = 'Kapoor')
廣告
© . All rights reserved.