83 votes

Utiliser la couche de base de données Django en dehors de Django ?

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.

79voto

FogleBird Points 23405

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.

18voto

Gab Points 1049

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

12voto

Dmitry Shevchenko Points 11398

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

10voto

Rahul Points 4204

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?]>

9voto

Daniel Roseman Points 199743

Une dernière option que personne n'a mentionnée : une sous-commande personnalisée ./manage.py .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X