Czy możliwe jest generowanie modeli django z bazy danych?

Bawię się w Django i Django ORM w domu i muszę powiedzieć, że uważam, że jest to jeden z najlepszych pod względem łatwości użycia.

Zastanawiałem się jednak, 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 używa django i jest dość stary).

Czy to możliwe?

Update: omawiana baza danych jest Oracle

Author: Cœur, 2009-07-24

3 answers

Tak, użyj inspectdb komendy:

Inspectdb

Introspektuje tabele bazy danych w bazie danych wskazywanej przez ustawienie DATABASE_NAME i wyprowadza moduł modelu Django (a models.py pliku) na standardowe wyjście.

Użyj tego, jeśli masz starszą bazę danych, z którą chcesz używać Django. Skrypt sprawdzi bazę danych i utworzy model dla każdej tabeli wewnątrz.

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

[...]

 76
Author: ars,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-26 15:28:59

(Django 1.7.1) po prostu uruchomienie python manage.py inspectdb spowoduje utworzenie klas dla wszystkich tabel w bazie danych i wyświetlenie na konsoli.

 $ python manage.py inspectdb

Zapisz to jako plik używając standardowego przekierowania wyjścia Uniksa:

 $ python manage.py inspectdb > models.py

(to działa dla mnie z mysql i django 1.9)

 14
Author: KKlalala,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-01 18:52:23

Zrobiłem aplikację wielokrotnego użytku opartą na django ' s inspectdb Command utility, Django Inspectdb Refactor .

Powoduje podział modeli na różne pliki wewnątrz folderu models z istniejącej bazy danych. Pomaga to w zarządzaniu modelami, gdy stają się one duże.

Można go zainstalować przez pip:

pip install django-inspectdb-refactor

Następnie zarejestruj aplikację w settings.py as inspectdb_refactor

Następnie możesz użyć go z linii poleceń jako:

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

To z powodzeniem stworzy modele folder ze wszystkimi tabelami jako różnymi plikami modelu w aplikacji. Na przykład:

typowa struktura

Więcej szczegółów można znaleźć tutaj.

 3
Author: not2acoder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-23 09:20:39