web-dev-qa-db-fra.com

Utilisez Django ORM autonome)

Doublons possibles:
N'utiliser que certaines parties de Django?
en utilisant uniquement la partie DB de Django

Je veux utiliser l'ORM Django comme autonome. Malgré une heure de recherche sur Google, il me reste encore plusieurs questions:

  • Faut-il que je configure mon projet Python avec un fichier setting.py,/myApp/et modules.py?
  • Puis-je créer un nouveau models.py et exécutez syncdb pour qu'il configure automatiquement les tables et les relations ou puis-je utiliser uniquement des modèles de projets Django existants?
  • Il semble y avoir beaucoup de questions concernant PYTHONPATH. Si vous n'appelez pas de modèles existants, est-ce nécessaire?

Je suppose que la chose la plus simple serait que quelqu'un poste simplement un modèle de base ou une procédure pas à pas du processus, clarifiant l'organisation des fichiers, par exemple:

db/
   __init__.py
   settings.py
   myScript.py
orm/
   __init__.py
   models.py

Et l'essentiel:

# settings.py
from Django.conf import settings

settings.configure(
     DATABASE_ENGINE   = "postgresql_psycopg2",
     DATABASE_Host     = "localhost",
     DATABASE_NAME     = "dbName",
     DATABASE_USER     = "user",
     DATABASE_PASSWORD = "pass",
     DATABASE_PORT     = "5432"
)

# orm/models.py
# ...

# myScript.py
# import models..

Et si vous devez exécuter quelque chose comme: Django-admin.py inspectdb ...

(Oh, j'exécute Windows si cela change quoi que ce soit concernant les arguments de ligne de commande.).

56

Ah ok, je l'ai compris et publierai les solutions pour tous ceux qui tentent de faire la même chose.

Cette solution suppose que vous souhaitez créer de nouveaux modèles.

Créez d'abord un nouveau dossier pour stocker vos fichiers. Nous l'appellerons "standAlone". Dans "standAlone", créez les fichiers suivants:

__init__.py
myScript.py
settings.py

Évidemment, "myScript.py" peut être nommé n'importe quoi.

Ensuite, créez un répertoire pour vos modèles.

Nous nommerons notre répertoire de modèles "myApp", mais réalisez qu'il s'agit d'une application normale Django dans un projet, en tant que telle, nommez-la de manière appropriée à la collection de modèles que vous écrivez.

Dans ce répertoire, créez 2 fichiers:

__init__.py
models.py

Vous allez avoir besoin d'une copie de manage.py à partir d'un projet Django existant) ou vous pouvez simplement récupérer une copie de votre Django chemin d'installation:

Django\conf\project_template\manage.py

Copiez le manage.py dans votre répertoire/standAlone. Ok donc vous devriez maintenant avoir la structure suivante:

\standAlone
    __init__.py
    myScript.py
    manage.py
    settings.py
\myApp
    __init__.py
    models.py

Ajoutez ce qui suit à votre fichier myScript.py:

# settings.py
from Django.conf import settings

settings.configure(
    DATABASE_ENGINE    = "postgresql_psycopg2",
    DATABASE_NAME      = "myDatabase",
    DATABASE_USER      = "myUsername",
    DATABASE_PASSWORD  = "myPassword",
    DATABASE_Host      = "localhost",
    DATABASE_PORT      = "5432",
    INSTALLED_APPS     = ("myApp")
)

from Django.db import models
from myApp.models import *

et ajoutez ceci à votre fichier settings.py:

    DATABASE_ENGINE    = "postgresql_psycopg2"
    DATABASE_NAME      = "myDatabase"
    DATABASE_USER      = "myUsername"
    DATABASE_PASSWORD  = "myPassword"
    DATABASE_Host      = "localhost"
    DATABASE_PORT      = "5432",
    INSTALLED_APPS     = ("myApp")

et enfin votre myApp/models.py:

# myApp/models.py
from Django.db import models

class MyModel(models.Model):
     field = models.CharField(max_length=255)

et c'est tout. Maintenant, pour avoir Django gérer votre base de données, dans l'invite de commande, accédez à notre répertoire/standalone et exécutez:

manage.py sql MyApp
32