Ограничение обновления sqlalchemy фляжки

Я пытаюсь выполнить запрос на обновление с лимитом в Flask, используя Flask-SQLAlchemy (а не SQLAlchemy!).

db.session.query(ItemObject).filter_by(owner_type=0,item_id=item_id.decode('hex')).update({'owner_type': '1'}) 

Когда я пытаюсь «.limit (1)» или «update ({'owner_type': '1'}, mysql_limit = 1)« Я получаю ошибку

 AttributeError: 'long' object has no attribute 'limit' 

или

 TypeError: update() got an unexpected keyword argument 'mysql_limit' 

Как я могу выполнить этот запрос без использования функции execute ()?

Для вашей первой ошибки кажется, что вы пытаетесь вызвать limit () после вызова update ().

 db.session.query(ItemObject).filter_by(owner_type=0,item_id=item_id.decode('hex')).update({'owner_type': '1'}) 

Эта строка возвращает long потому что update() возвращает количество строк, которые были сопоставлены (не изменены!). После обновления невозможно установить ограничение.

Вы также не можете вызывать limit на запрос с update , поэтому он не будет работать в любом случае. Это всего лишь вещь MySQL.

Взгляните на этот предыдущий ответ – https://stackoverflow.com/a/25943713/175320 – который показывает вам, как получить тот же конечный результат, но переносимым образом с помощью подзапросов.