Хорошо, у меня есть такой код
net = table1.query.filter_by(user='foo', size=size).first()
net.user = bar
net.commit()
Я думал, что это обновит одну запись, но, к моему большому разочарованию, этого не произошло; он обновил ~ 2300 и сгенерировал эту ошибку
sqlalchemy.orm.exc.StaleDataError: UPDATE statement on table 'table1' expected to update 1 row(s); 2305 were matched
Документы говорят, что first()
применяет ограничение на единицу в сгенерированном SQL.
Документы также скажем,
обратите внимание, что это может состоять из нескольких строк результатов, если присутствуют коллекции, загруженные соединением
, но, честно говоря, я действительно не понимаю эту часть.
У кого-нибудь еще была эта проблема? Какую функцию я должен использовать, если не первую? Кто-нибудь может объяснить, что здесь происходит, я действительно потерялся.