J'ai une belle base de données que j'ai créée dans Django, et j'aimerais m'interfacer avec des scripts python en dehors de mon site web, donc je suis curieux s'il est possible d'utiliser l'API de base de données Django en dehors d'un site Django, et si oui quelqu'un a des informations sur la façon dont cela peut être fait ? Google n'a pas donné beaucoup de résultats pour cela.
Réponses
Trop de publicités?Il vous suffit de configurer les paramètres de Django avant de faire des appels, y compris l'importation de vos modèles. Quelque chose comme ça :
from django.conf import settings
settings.configure(
DATABASE_ENGINE = 'postgresql_psycopg2',
DATABASE_NAME = 'db_name',
DATABASE_USER = 'db_user',
DATABASE_PASSWORD = 'db_pass',
DATABASE_HOST = 'localhost',
DATABASE_PORT = '5432',
TIME_ZONE = 'America/New_York',
)
Encore une fois, assurez-vous d'exécuter ce code avant de l'exécuter, par exemple :
from your_app.models import *
Ensuite, utilisez simplement l'API DB comme d'habitude.
Pour django 1.7, j'ai utilisé ce qui suit pour me lever et courir.
settings.py :
from django.conf import settings
settings.configure(
DATABASES={
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'name',
'USER': 'usr',
'PASSWORD': 'secret',
'HOST': '127.0.0.1',
'PORT': '5432',
},
},
TIME_ZONE='America/Montreal',
)
Dans le fichier contenant la routine de démarrage
import os
import django
import v10consolidator.settings
from myapp.models import *
os.environ.setdefault(
"DJANGO_SETTINGS_MODULE",
"myapp.settings"
)
django.setup()
Mettre à jour setup_environ est à supprimer dans django 1.6
Si vous êtes en mesure d'importer votre fichier settings.py, jetez un coup d'œil à la commande handy setup_environ.
from django.core.management import setup_environ
from mysite import settings
setup_environ(settings)
#here you can do everything you could in your project
Je cherchais des réponses pour django 3.0 et aucune des méthodes ci-dessus ne fonctionnait exactement pour moi.
J'ai lu les documents officiels sur https://docs.djangoproject.com/fr/3.0/topics/settings/et ces scripts ont fonctionné pour moi.
mon script db_tasks.py est à l'intérieur de mysite comme ceci.
mysite
mysite
db.sqlite3
db_tasks.py
manage.py
polls
db_tasks.py
import os
import django
os.environ['DJANGO_SETTINGS_MODULE'] = 'dashboard.settings'
django.setup()
from polls.models import Question
print(Question.objects.all())
out: <QuerySet [<Question: WTU?]>
Une dernière option que personne n'a mentionnée : une sous-commande personnalisée ./manage.py
.