sql >> Base de Datos >  >> RDS >> Mysql

Cómo realizar bloqueos de tabla/fila en Django

Django no proporciona explícitamente una API para realizar el bloqueo de tablas. En mi experiencia, el código bien diseñado rara vez necesita bloquear una tabla completa, y la mayoría de los problemas de simultaneidad se pueden resolver con el bloqueo a nivel de fila. Es un último esfuerzo:no resuelve la concurrencia, simplemente elimina cualquier intento de concurrencia.

Si realmente necesita un bloqueo a nivel de tabla, puede usar un cursor y ejecutar sentencias SQL sin procesar:

from django.db import connection

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