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

Come eseguire i blocchi tabella/riga in Django

Django non fornisce esplicitamente un'API per eseguire il blocco delle tabelle. Nella mia esperienza, il codice ben progettato raramente ha bisogno di bloccare un'intera tabella e la maggior parte dei problemi di concorrenza può essere risolta con il blocco a livello di riga. È un ultimo sforzo:non risolve la concorrenza, semplicemente uccide qualsiasi tentativo di concorrenza.

Se hai davvero bisogno del blocco a livello di tabella, puoi usare un cursore ed eseguire istruzioni SQL grezze:

from django.db import connection

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