Utiliser les fonctionnalités Django à partir de scripts batch en dehors du projet Django

Lorsque vous souhaitez effectuer un traitement par lots dans Django, vous écrivez une commande de gestion.

Cependant, il existe parfois des traitements par lots qui ne suffisent pas pour écrire des commandes de gestion. Un script de migration de données qui est écrit. Un outil de comptage uniquement pour le dépannage.

Dans un tel cas, vous pouvez accéder aux fonctions de Django à partir d'un fichier Python placé en dehors du projet Django sans l'enregistrer en tant que commande de gestion.

Préparez un script comme celui-ci.

django_setup.py


"""
django_setup()Lorsque vous exécutez, Django propose(Importation de modèle, etc.)Sera disponible.
"""

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()

Tout ce que vous avez à faire est d'ajouter la racine du projet Django (où ./manage.py est) à sys.path et d'exécuter django.setup ().

Si vous utilisez votre propre fichier de configuration, spécifiez-le dans la variable d'environnement DJANGO_SETTINGS_MODULE.

Je suis __file__ avec ʻos.path.dirname`, mais veuillez changer cela en fonction de votre environnement. On suppose que base_dir est le répertoire "one level up" du projet Django (myproject).

Si vous faites cela, vous pouvez utiliser un script d'écriture, etc.

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()

De cette façon, vous pouvez accéder aux fonctionnalités de votre projet Django.

Recommended Posts

Utiliser les fonctionnalités Django à partir de scripts batch en dehors du projet Django
Utiliser le modèle django de l'interpréteur
Enregistrer l'application Django dans le projet
Utilisez BigQuery à partir de votre bloc-notes Jupyter local
Utiliser Django à partir d'un script Python local
[Python] Présentez UIKit3 au projet Django
Utilisez Python dans votre environnement depuis Win Automation