SQLAlchemy 更新表达式基础教程文档
收录于 2023-04-20 00:10:05 · بالعربية · English · Español · हिंदीName · 日本語 · Русский язык · 中文繁體
目标表对象上的
update() 方法构造等效的 UPDATE SQL 表达式。
table.update().where(conditions).values(SET expressions)
结果更新对象上的
values() 方法用于指定 UPDATE 的 SET 条件。如果保留为 None,则 SET 条件由在执行和/或编译语句期间传递给语句的参数确定。
where 子句是一个可选表达式,用于描述 UPDATE 语句的 WHERE 条件。
以下代码片段将学生表中"姓氏"列的值从"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')