2009-07-24 14 views
49

Z Django i ORM Django pracuję w domu, i muszę powiedzieć, że uważam, że jest to jeden z najlepszych pod względem łatwości użytkowania.Czy można generować modele django z bazy danych?

Jednak zastanawiałem się, czy można go użyć w "odwrocie".

Zasadniczo chciałbym wygenerować modele Django z istniejącego schematu bazy danych (z projektu, który nie korzysta z django i jest dość stary).

Czy to możliwe?

Aktualizacja: baza w pytaniu Oracle

Odpowiedz

65

Tak, użyj polecenia inspectdb:

inspectdb

introspekcji z Bazy se tabel w bazie danych wskazanych przez ustawienie DATABASE_NAME i wyprowadza moduł modelu Django (plik models.py) na standardowe wyjście.

Użyj tej opcji, jeśli masz starszą bazę danych, z której chcesz korzystać z Django. Skrypt sprawdzi bazę danych i utworzy model dla każdej tabeli w nim zawartej.

Jak można się spodziewać, utworzone modele będą miały atrybut dla każdego pola w tabeli. Zauważ, że inspectdb ma kilka szczególnych przypadków w swoim wyjściu field-name:

[...]

+2

doskonały, dzięki! –

+0

Czytając powyższe informacje, jest ona obsługiwana dla mysql, sqlite i postgresql. Niestety baza danych, którą próbuję użyć, to Oracle :( –

+0

oof, nie wierzę, że Django ma obecnie dobre wsparcie dla Oracle, zarówno w przód jak i w tył:/ – AlbertoPL

10

(Django 1.7.1) Po prostu działa python manage.py inspectdb stworzy zajęcia dla wszystkich tabel w bazie danych i wyświetlane na konsola.

$ python manage.py inspectdb 

Zapisz jako plik przy użyciu standardowego wyjścia Unix przekierowanie:

$ python manage.py inspectdb > models.py 

(To działa na mnie z MySQL Django 1.9)

0

Zrobiłem wielokrotnego użytku aplikację na podstawie Django narzędzie komendy inspectdb, Django Inspectdb Refactor.

To powoduje rozbicie modeli na różne pliki w folderze modeli z istniejącej bazy danych. Pomaga to zarządzać modelami, gdy stają się one duże.

Można go zainstalować poprzez pip:

pip install django-inspectdb-refactor 

Następnie zarejestrować aplikację w ustawieniach.py jak inspectdb_refactor

po tym można go używać z linii poleceń jak:

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

To będzie z powodzeniem utworzyć folderu modeli ze wszystkimi tabelami jak innych plików modelowych wewnątrz aplikacji.

+0

Dodaj więcej opisów tutaj – Billa

Powiązane problemy