Mysql
 sql >> база данни >  >> RDS >> Mysql

Опитайте отново при блокиране за MySQL / SQLAlchemy

Не можете да направите това с Session отвън. Session ще трябва да подкрепят това вътрешно. Това ще включва спестяване на много частно състояние, така че това може да не си струва времето ви.

Напълно зарязах повечето ORM неща в полза на интерфейса SQLAlchemy Core от по-ниско ниво. Използвайки този (или дори всеки dbapi интерфейс) можете да използвате тривиално своя retry_on_deadlock_decorator декоратор (вижте въпроса по-горе), за да направите следящ за повторен опит db.execute обвивка.

 @retry_on_deadlock_decorator
 def deadlock_safe_execute(db, stmt, *args, **kw):
     return db.execute(stmt, *args, **kw)

И вместо

 db.execute("UPDATE users SET active=0")

ти го правиш

 deadlock_safe_execute(db, "UPDATE users SET active=0")

който ще се опита отново автоматично, ако възникне задънена улица.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. използвайки mysql regex_replace с регулярен израз

  2. Mysql CREATE DEFINER

  3. Моят sql SELECT израз JOIN на три таблици

  4. Laravel 5.5 не може да изобрази динамични диаграми, използвайки пакета за диаграми на ConsoleTV

  5. MICROSECOND() Пример – MySQL