2009-07-24 1 views
49

Ho giocato a casa con Django e il Django ORM, e devo dire che ritengo sia uno dei migliori in termini di facilità d'uso.È possibile generare modelli django dal database?

Tuttavia, mi chiedevo se fosse possibile utilizzarlo in "reverse".

Fondamentalmente quello che mi piacerebbe fare è generare modelli Django da uno schema di database esistente (da un progetto che non usa django ed è piuttosto vecchio).

È possibile?

Aggiornamento: il database in questione è Oracle

risposta

65

Sì, utilizzare il comando inspectdb:

inspectdb

introspetta il databa se le tabelle nel database indicato dall'impostazione DATABASE_NAME e restituisce un modulo di modello Django (un file models.py) all'output standard.

Utilizzare questo se si dispone di un database precedente con cui si desidera utilizzare Django. Lo script controllerà il database e creerà un modello per ogni tabella al suo interno.

Come ci si potrebbe aspettare, i modelli creati avranno un attributo per ogni campo nella tabella. Si noti che inspectdb ha alcuni casi particolari nel proprio campo d'uscita-name:

[...]

+2

perfetto, grazie! –

+0

Leggendo queste informazioni, si dice che è supportato per mysql, sqlite e postgresql. Purtroppo il database che sto cercando di utilizzare è Oracle :( –

+0

oof, non credo che Django abbia un buon supporto per Oracle al momento, sia in avanti che all'indietro:/ – AlbertoPL

10

(Django 1.7.1) Il semplice avvio python manage.py inspectdb creerà le classi per tutte le tabelle nel database e visualizzare sul console.

$ python manage.py inspectdb 

Salva questo come un file utilizzando standard output reindirizzamento Unix:

$ python manage.py inspectdb > models.py 

(Questo funziona per me con MySQL e Django 1.9)

0

Ho fatto un'applicazione riutilizzabile sulla base di Django utility di comando inspectdb, Django Inspectdb Refactor.

Questo interrompe i modelli in file diversi all'interno della cartella dei modelli da un database esistente. Questo aiuta a gestire i modelli quando diventano grandi.

È possibile installarlo tramite pip:

pip install django-inspectdb-refactor 

quindi registrare l'applicazione in ambienti.py come inspectdb_refactor

Dopo questo si può usare da linea di comando come:

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

Questo creerà con successo la cartella modelli con tutte le tabelle come diversi file modello all'interno della vostra app.

+0

Aggiungi qualche altra descrizione qui – Billa