2009-07-24 17 views
49

He estado jugando con Django y el ORM de Django en casa, y debo decir que creo que es uno de los mejores en términos de facilidad de uso.¿Es posible generar modelos django desde la base de datos?

Sin embargo, me preguntaba si era posible usarlo en "reversa".

Básicamente lo que me gustaría hacer es generar modelos de Django a partir de un esquema de base de datos existente (de un proyecto que no usa django y es bastante antiguo).

¿Esto es posible?

Actualización: la base de datos de Oracle en cuestión es

Respuesta

65

Sí, utilice el comando inspectdb:

inspectdb

introspección del Databa Algunas tablas en la base de datos apuntan a la configuración DATABASE_NAME y envían un módulo modelo de Django (un archivo models.py) a la salida estándar.

Utilice esto si tiene una base de datos heredada con la que desea utilizar Django. La secuencia de comandos inspeccionará la base de datos y creará un modelo para cada tabla dentro de ella.

Como era de esperar, los modelos creados tendrán un atributo para cada campo de la tabla. Tenga en cuenta que inspectdb tiene unos pocos casos especiales en su salida de campo de nombre:

[...]

+2

perfecto, gracias! –

+0

Al leer esa información, dice que es compatible con mysql, sqlite y postgresql. Lamentablemente, la base de datos que estoy tratando de usar es Oracle :( –

+0

oof, no creo que Django tenga un buen soporte para Oracle en este momento, tanto hacia delante como hacia atrás:/ – AlbertoPL

10

(Django 1.7.1) simplemente ejecutando python manage.py inspectdb creará clases para todas las tablas de base de datos y mostrar en consola.

$ python manage.py inspectdb 

salva esto como un archivo mediante el uso de redirección de la salida estándar de Unix:

$ python manage.py inspectdb > models.py 

(Esto funciona para mí con MySQL y Django 1.9)

0

He hecho una aplicación reutilizable basado en Django utilidad de comando inspectdb, Django Inspectdb Refactor.

Esto descompone los modelos en diferentes archivos dentro de la carpeta de modelos desde una base de datos existente. Esto ayuda a administrar los modelos cuando se vuelven grandes.

Se puede instalar a través de pepita:

pip install django-inspectdb-refactor 

continuación, se registra la aplicación de configuración.py como inspectdb_refactor

Después de esto se puede usar desde la línea de comandos como:

python manage.py inspectdb_refactor --database=your_dbname_defined_in_settings --app=your_app_label 

Esto creará con éxito modelos carpeta con todas las tablas como diferentes archivos de modelo dentro de su aplicación.

+0

Agregue algunas descripciones más aquí – Billa

Cuestiones relacionadas