Soweit ich weiß, bietet Django keine Optionen, um die Datenbankverbindung auf einen "Nur-Lese" -Modus zu beschränken. Sie können dies jedoch tun, indem Sie einen schreibgeschützten Benutzer in Ihrer MySQL-Datenbank-Engine erstellen.
Eine weitere Idee auf der Django-Codepage wäre, einen eigenen Cursor zu erstellen, der eine Ausnahme auslöst, wenn execute
oder executemany
aufgerufen wird. Sie können dieses Modul django-db-readonly
anzeigen.
Ab Django 1.2 können Sie eine Router-Klasse angeben, die Abfragen an verschiedene Datenbanken "routet" () Ссылка ).
Um eine db zum Lesen und eine zum Schreiben zu verwenden, können Sie eine Router-Klasse wie folgt definieren:
%Vor%Platziere das in deiner settings.py
%Vor%Dies funktioniert für mich, solange ich select_for_update () nicht verwende, was als Lesevorgang betrachtet wird, aber Schreibzugriff auf die Datenbank benötigt. Die einzige Problemumgehung, die ich bisher gefunden habe, ist, select_for_update in einer Manager-Klasse auf ähnliche Weise zu überschreiben:
%Vor%Tags und Links django mysql django-database