- 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')
广告