Использовать django создать схему базы данных или использовать powerdesigner создать схему базы данных

Я готов начать новый проект с django, и он включает в себя некоторые операции с базой данных. У меня есть 2 способа получить схему:

  1. используйте powerdesigner, спроектируйте схему базы данных и выведите sql, затем используйте python manage.py inspectdb генерировать модели.
  2. разработать модель, а затем использовать python manage.py makemigrations а также python manage.py migrate получить схему базы данных.

Кто-нибудь объясняет, в чем разница между этими двумя способами и как мне выбрать?

1 ответ

Решение

Из документации inspectdb:

Используйте это, если у вас есть устаревшая база данных, с которой вы хотели бы использовать Django. Скрипт проверит базу данных и создаст модель для каждой таблицы в ней.

Лучше, если у вас уже есть работающая БД и вы хотите использовать на ней django. У этого есть ограничения как:

  1. Если inspectdb не может сопоставить тип столбца с типом поля модели, он будет использовать TextField и вставит комментарий Python "Этот тип поля является предположением". рядом с полем в сгенерированной модели.
  2. Если имя столбца базы данных является зарезервированным словом Python (например, "pass", "class" или "for"), inspectdb добавит "_field" к имени атрибута. Например, если в таблице есть столбец "for", сгенерированная модель будет иметь поле "for_field" с атрибутом db_column, установленным в "for". inspectdb вставит комментарий Python "Поле переименовано, потому что это было зарезервированное слово Python". рядом с полем.

Также это быстрый способ, не рекомендуется, если вы запускаете проект django.

Также пишу модели, работает makemigration а также migrate Команда создаст схему базы данных, содержащую настраиваемые поля, такие как:

auth_group                               
auth_group_permissions                   
auth_permission                          
auth_user                                
auth_user_groups                         
auth_user_user_permissions      

Что важно для системы django, если вы хотите использовать ее аутентификационный бэкэнд, модель пользователя и т. Д., Которые являются основными частями django.

Другие вопросы по тегам