使用SqlAlchemy,是否可以構建只更新第一個匹配行的查詢?使用SqlAlchemy和PostgreSQL更新..限制1
以我爲例,我需要更新最新的日誌條目:
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: Can't call Query.update() when limit() has been called
這是有道理的,因爲UPDATE ... LIMIT 1
是一個MySQL特有的功能(帶給出的解決方案here)
但是我怎樣才能對PostgreSQL做同樣的事?可能使用the subquery approach?
最好的解決方案取決於每個併發事務是否應該根據'ORDER BY'或***下一個***行,還沒有鎖定或者單個,隨機/任意行匹配一些標準。 – 2014-09-21 01:43:58