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
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:
[...]
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)
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:
Więcej szczegółów można znaleźć tutaj.
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