使用SqlAlchemy,是否可以构建一个仅更新第一个匹配行的查询?
在我的情况下,我需要更新最近的日志条目。
在我的情况下,我需要更新最近的日志条目。
class Log(Base):
__tablename__ = 'logs'
id = Column(Integer, primary_key=True)
#...
analyzed = Column(Boolean)
session.query(Log) \
.order_by(Log.id.desc()) \
.limit(1) \
.update({ 'analyzed': True })
这将导致:
InvalidRequestError: 当limit()已被调用时,无法调用Query.update()
这是有道理的,因为UPDATE ... LIMIT 1
是仅适用于MySQL的功能(解决方案在这里给出)
但我该如何在PostgreSQL中实现相同的功能呢?可能需要使用子查询方法?
ORDER BY
更新相同的第一行,还是更新下一个未锁定的行,或者单个匹配某些条件的随机/任意行。 - Erwin Brandstetter