2009-06-02 12 views
45

duplicados posibles:
Use only some parts of Django?
Using only the DB part of DjangoUso de Django ORM como independientes

que quieren utilizar el ORM de Django como autónomo. A pesar de una hora de búsqueda Google, todavía estoy izquierda con varias preguntas:

  • ¿Me requieren para fijar mi proyecto Python con un setting.py,/myApp/directorio y archivo modules.py?
  • ¿Puedo crear un nuevo models.py y ejecutar syncdb para que configure automáticamente las tablas y las relaciones o solo puedo usar modelos de proyectos existentes de Django?
  • Parece haber muchas preguntas con respecto a PYTHONPATH. Si no está llamando a modelos existentes, ¿es esto necesario?

Creo que lo más fácil sería para alguien que acaba de publicar una plantilla básica o paso a paso del proceso, aclarando la organización de los archivos, por ejemplo:

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

Y los productos de primera necesidad:

# 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.. 

Y si necesita ejecutar algo como: django-admin.py inspectdb ...

(Oh, estoy corriendo Windows si eso cambia algo con respecto a los argumentos de línea de comandos).

+1

La cuestión vinculada por William Brendel tiene la mejor respuesta, pero también ver http://stackoverflow.com/questions/ 579511 para más discusión. –

+0

Me pregunto cómo se "buscó en Google durante 1 hora" y no para obtener las preguntas señaladas, por los comentarios de Van Gale y William Brendel. –

+1

no es un "duplicado exacto" - mientras que esa publicación me ayudó a encontrar la respuesta, no era lo que estaba buscando. Espero que eso cerrado como "duplicado exacto" no modifique la capacidad de búsqueda de mi solución a continuación porque es mucho más completo y la forma de crear modelos que no están cubiertos en ningún otro lado. – KeyboardInterrupt

Respuesta

26

Ah ok Me di cuenta y publicaré las soluciones para cualquiera que intente hacer lo mismo.

Esta solución asume que desea crear nuevos modelos.

Primero cree una nueva carpeta para almacenar sus archivos. Lo llamaremos "standAlone". Dentro de "Independiente", crear los siguientes archivos:

__init__.py 
myScript.py 
settings.py 

Obviamente "myScript.py" se puede nombrar lo que sea.

A continuación, cree un directorio para sus modelos.

Nombraremos nuestro directorio de modelos "myApp", pero tenga en cuenta que esta es una aplicación Django normal dentro de un proyecto, como tal, asígnele el nombre apropiado a la colección de modelos que está escribiendo.

Dentro de este directorio crear 2 archivos:

__init__.py 
models.py 

Su va a necesitar una copia de manage.py de un bien sea un proyecto Django existente o puede simplemente tomar una copia de su camino Django instalar:

django\conf\project_template\manage.py 

Copie el archivo manage.py en su directorio/standAlone.Ok por lo que ahora debe tener la siguiente estructura:

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

Añadir lo siguiente a su archivo 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 * 

y añadir esto a su archivo settings.py:

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

y finalmente su myApp/models.py:

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

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

y eso es todo. Ahora tener Django gestionar su base de datos, en la línea de comandos para navegar por nuestro directorio/autónomo y ejecute:

manage.py sql MyApp 
+0

Actualice http://stackoverflow.com/questions/302651/use-only-some-parts-of-django con información nueva o diferente. Por favor, agregue su respuesta a esa versión de su pregunta. –

+1

En mi caso, para necesitarlo funciona (python2.7), necesitaba cambiar '(" myApp ")' a '(" myApp ",)', también necesitaba anexar el directorio de nivel superior a 'sys.path '. Además, 'settings.py' podría estar vacío (funcionó para mí); no es necesario duplicar la información de conexión. – Nikita

Cuestiones relacionadas