sql >> Database >  >> RDS >> Mysql

Opnieuw proberen bij impasse voor MySQL / SQLAlchemy

Je kunt dat niet echt doen met de Session van de buitenkant. Session zou dit intern moeten ondersteunen. Het zou veel privé-staat besparen, dus dit is misschien niet de moeite waard.

Ik heb de meeste ORM-dingen volledig gedumpt ten gunste van de SQLAlchemy Core-interface op een lager niveau. Met die (of zelfs een dbapi-interface) kun je triviaal je retry_on_deadlock_decorator gebruiken decorateur (zie vraag hierboven) om een ​​retry-aware db.execute . te maken omslag.

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

En in plaats van

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

jij wel

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

die automatisch opnieuw zal proberen als er een impasse optreedt.



  1. Voeg een enkele rij toe vanuit een tabel in MySQL

  2. Datum en tijd Locales beschikbaar in MariaDB

  3. Laravel 5 PDOException kon stuurprogramma niet vinden

  4. Hiërarchische tagging in SQL