[PYTHON] Verwenden Sie Django-Funktionen aus Batch-Skripten außerhalb des Django-Projekts

Wenn Sie die Stapelverarbeitung in Django durchführen möchten, schreiben Sie einen Verwaltungsbefehl.

Es gibt jedoch gelegentliche Stapelprozesse, die nicht ausreichen, um Verwaltungsbefehle zu schreiben. Ein Datenmigrationsskript, das aufgeschrieben wird. Ein Zählwerkzeug nur zur Fehlerbehebung.

In einem solchen Fall können Sie über eine Python-Datei außerhalb des Django-Projekts auf die Funktionen von Django zugreifen, ohne sie als Verwaltungsbefehl zu registrieren.

Halten Sie ein solches Skript bereit.

django_setup.py


"""
django_setup()Wenn Sie laufen, bietet Django Funktionen(Modellimport etc.)Wird verfügbar sein.
"""

import os
import sys
import django


def django_setup():
    os.environ.setdefault(
        'DJANGO_SETTINGS_MODULE', 'myapp.settings')
    base_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
    sys.path.append(os.path.join(base_dir, 'myproject'))
    django.setup()

Alles, was Sie tun müssen, ist, das Django-Projekt root (wo ./manage.py ist) zu sys.path hinzuzufügen und django.setup () auszuführen.

Wenn Sie Ihre eigene Konfigurationsdatei verwenden, geben Sie diese in der Umgebungsvariablen "DJANGO_SETTINGS_MODULE" an.

Ich folge __file__ mit os.path.dirname, aber bitte ändere dies entsprechend deiner Umgebung. Angenommen, base_dir ist das "einstufige" Verzeichnis des Django-Projekts (myproject).

In diesem Fall können Sie ein Abschreibungsskript usw. verwenden.

from django_setup import django_setup


def main():
    from myapp.models import MyModel
    
    for item in MyModel.objects.filter(...):
        ...

  
if __name__ == '__main__':
  django_setup()
  main()

Auf diese Weise können Sie auf die Funktionen in Ihrem Django-Projekt zugreifen.

Recommended Posts

Verwenden Sie Django-Funktionen aus Batch-Skripten außerhalb des Django-Projekts
Verwenden Sie das Django-Modell vom Interpreter
Registrieren Sie die Django-Anwendung im Projekt
Verwenden Sie BigQuery von Ihrem lokalen Jupyter Notebook
Verwenden Sie Django aus einem lokalen Python-Skript
[Python] Führen Sie UIKit3 in das Django-Projekt ein
Verwenden Sie Python in Ihrer Umgebung von Win Automation