sql >> Database teknologi >  >> RDS >> Mysql

Prøv igen på dødvande for MySQL / SQLAlchemy

Du kan ikke rigtig gøre det med Session udefra. Session skulle understøtte dette internt. Det ville indebære at spare en masse privat stat, så det er måske ikke tiden værd.

Jeg droppede fuldstændigt de fleste ORM-ting til fordel for SQLAlchemy Core-grænsefladen på lavere niveau. Ved at bruge den (eller endda en hvilken som helst dbapi-grænseflade) kan du trivielt bruge din retry_on_deadlock_decorator decorator (se spørgsmål ovenfor) for at lave en genforsøgsbevidst db.execute indpakning.

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

Og i stedet for

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

du gør

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

som vil prøve igen automatisk, hvis der opstår en dødvande.



  1. Group_concat MySQL-funktionens ækvivalent i Oracle

  2. MySQL rækkefølge efter streng med tal

  3. Bedste praksis:Sporing af bannervisninger

  4. Installer mysqldb på sneleopard