在sqlAlchemy中简单更新

8 投票
1 回答
9223 浏览
提问于 2025-04-15 12:21

UserTable 表示的是一个用户表,里面有以下几个字段:

  • id(整数类型)

  • name(字符串类型)

  • last_login(日期时间类型)

在处理网页请求时,我手里有一个 用户ID,我只想把 last_login 字段更新为“现在”。

我觉得有两种方法可以做到这一点:

  1. 直接使用数据库引擎发出 SQL 语句(这样就不使用映射器了)

  2. 或者先查询用户,然后再更新对象

这两种方法都能正常工作,但在代码上看起来都不太好。

有没有人知道用 sqlalchemy 做一个不查询的优雅更新方法?有没有其他的 ORM 做得更好?

谢谢

1 个回答

23

假设你已经有了一个叫做 UserTable 的映射器:

DBSession.query(UserTable).filter_by(id = user_id).\
    update({"last_login":datetime.datetime.now()}, synchronize_session=False)

文档中还有更多的参数说明。

撰写回答