Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So führen Sie Tabellen-/Zeilensperren in Django durch

Django bietet nicht explizit eine API zum Ausführen von Tabellensperren. Meiner Erfahrung nach muss gut gestalteter Code selten eine ganze Tabelle sperren, und die meisten Parallelitätsprobleme können mit Sperren auf Zeilenebene gelöst werden. Es ist ein letzter verzweifelter Versuch:Es löst keine Parallelität, es tötet einfach jeden Versuch einer Parallelität.

Wenn Sie wirklich Sperren auf Tabellenebene benötigen, können Sie einen Cursor verwenden und rohe SQL-Anweisungen ausführen:

from django.db import connection

with connection.cursor() as cursor:
    cursor.execute("LOCK TABLES %s READ", [tablename])
    try:
        ...
    finally:
        cursor.execute("UNLOCK TABLES;")