Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como executar bloqueios de tabela/linha no Django


O Django não fornece explicitamente uma API para realizar o bloqueio de tabelas. Na minha experiência, código bem projetado raramente precisa bloquear uma tabela inteira, e a maioria dos problemas de simultaneidade pode ser resolvida com bloqueio em nível de linha. É um esforço de última hora:não resolve a simultaneidade, simplesmente mata qualquer tentativa de simultaneidade.

Se você realmente precisa de bloqueio em nível de tabela, pode usar um cursor e executar instruções SQL brutas:
from django.db import connection

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