Можно ли с помощью 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: невозможно вызвать Query.update() при вызове limit()
Это имеет смысл, поскольку UPDATE ... LIMIT 1
— это функция только для MySQL (решение приведено здесь)
Но как мне сделать то же самое с PostgreSQL? Возможно, используя подход с подзапросом?
ORDER BY
или следующую. строка, еще не заблокированная, или одиночная, случайная/произвольная строка, соответствующая некоторым критериям. - person Erwin Brandstetter   schedule 21.09.2014