58 votes

Utiliser l'ORM de Django de manière autonome

Duplicatas possibles :
N'utiliser que certaines parties de Django ?
Utiliser uniquement la partie DB de Django

Je souhaite utiliser l'ORM de Django en tant qu'outil autonome. Malgré une heure de recherche sur Google, je reste avec plusieurs questions :

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

Je pense que le plus simple serait que quelqu'un mette en ligne un modèle de base ou une description du processus, en clarifiant l'organisation des fichiers, par exemple :

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

Et les produits de base essentiels :

# 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 avez besoin d'exécuter quelque chose comme : django-admin.py inspectdb ...

(Oh, je suis sous Windows si cela change quoi que ce soit aux arguments de la ligne de commande).

32voto

KeyboardInterrupt Points 759

Ah ok j'ai trouvé et je vais poster les solutions pour ceux qui essaient de faire la même chose.

Cette solution suppose que vous souhaitiez 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 porter n'importe quel nom.

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

Nous nommerons notre répertoire de modèles "myApp", mais sachez qu'il s'agit d'une application Django normale au sein d'un projet, et qu'il convient donc de lui donner un nom approprié à la collection de modèles que vous écrivez.

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

__init__.py
models.py

Vous aurez besoin d'une copie de manage.py provenant d'un projet Django existant ou d'un chemin d'installation de Django :

django\conf\project_template\manage.py

Copiez le fichier manage.py dans votre répertoire /standAlone. Ok, 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 que Django gère votre base de données, dans l'invite de commande, naviguez vers notre répertoire /standalone et exécutez :

manage.py sql MyApp

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