Вопрос по python – SQLAlchemy - выберите для примера обновления

19

Я ищу полный пример использования select для обновления в SQLAlchemy, но не нашел ни одного гугла. Мне нужно заблокировать одну строку и обновить столбец, следующий код не работает (блокируется навсегда):

s = table.select(table.c.user=="test",for_update=True)
# Do update or not depending on the row
u = table.update().where(table.c.user=="test")         
u.execute(email="foo") 

Нужен ли мне коммит? Как я могу это сделать? Насколько я знаю, вам нужно: начать транзакцию выберите ... для обновления Обновить совершить

Error: User Rate Limit Exceededdocs.sqlalchemy.org/en/rel_0_9/orm/… Alan Hamlett

Ваш Ответ

3   ответа
4

EngineTransactionvalues(...)execute:

>>> conn.execute(users.update().
...              where(table.c.user=="test").
...              values(email="foo")
...              ) 
>>> my_engine.commit()
Этот ответ не соответствует основному вопросу данного вопроса, а именно:SELECT ... FOR UPDATEError: User Rate Limit Exceeded
17

foo = session.query(Foo).filter(Foo.id==1234).with_for_update().one()
# this row is now locked

foo.name = 'bar'
session.add(foo)

session.commit()
# this row is now unlocked
Error: User Rate Limit Exceededdocs.sqlalchemy.org/en/latest/orm/…
Error: User Rate Limit ExceededaddError: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
7

Error: User Rate Limit Exceededs.execute()Error: User Rate Limit Exceeded

s = conn.execute(table.select(table.c.user=="test", for_update=True))
u = conn.execute(table.update().where(table.c.user=="test), {"email": "foo"})
conn.commit()

Error: User Rate Limit Exceeded

Похожие вопросы