- SQLAlchemy 教程
- SQLAlchemy - 主頁
- SQLAlchemy - 簡介
- SQLAlchemy 核心
- 表示式語言
- 連線到資料庫
- 建立表
- SQL 表示式
- 執行表示式
- 選擇行
- 使用文字 SQL
- 使用別名
- 使用 UPDATE 表示式
- 使用 DELETE 表示式
- 使用多表
- 使用多表更新
- 引數順序更新
- 多表刪除
- 使用聯接
- 使用合取
- 使用函式
- 使用集合運算
- SQLAlchemy ORM
- 宣告對映
- 建立會話
- 新增物件
- 使用查詢
- 更新物件
- 應用過濾器
- 過濾器運算子
- 返回列表和標量
- 文字 SQL
- 建立關係
- 處理相關物件
- 處理聯接
- 常見關係運算符
- 急載入
- 刪除相關物件
- 多對多關係
- 方言
- SQLAlchemy 實用資源
- SQLAlchemy - 快速指南
- SQLAlchemy - 實用資源
- SQLAlchemy - 討論
使用 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') ]
請注意,還可以使用 sqlalchemy.sql.expression 模組中的update()函式實現類似的功能,如下所示 −
from sqlalchemy.sql.expression import update stmt = update(students).where(students.c.lastname == 'Khanna').values(lastname = 'Kapoor')
廣告