How to integrate Django with a legacy database¶
Хотя Django лучше всего подходит для разработки новых приложений, вполне возможно интегрировать его в старые базы данных. Django включает в себя несколько утилит для автоматизации этого процесса.
Этот документ предполагает, что вы знаете основы Django, как описано в tutorial.
Как только вы настроите Django, вы будете следовать этому общему процессу для интеграции с существующей базой данных.
Задайте Django параметры вашей базы данных¶
Вам нужно сообщить Django параметры подключения к базе данных и имя базы данных. Сделайте это, отредактировав параметр DATABASES
и присвоив значения следующим ключам для соединения 'default'
:
Автоматическая генерация моделей¶
Django поставляется с утилитой inspectdb
, которая может создавать модели путем интроспекции существующей базы данных. Вы можете просмотреть результат, выполнив эту команду:
$ python manage.py inspectdb
Сохраните это в файл, используя стандартное перенаправление вывода Unix:
$ python manage.py inspectdb > models.py
Эта функция предназначена для сокращения времени, а не для окончательного создания модели. Для получения дополнительной информации см. раздел documentation of inspectdb
.
После того, как вы очистили свои модели, назовите файл models.py
и поместите его в пакет Python, в котором находится ваше приложение. Затем добавьте приложение к вашей настройке INSTALLED_APPS
.
По умолчанию inspectdb
создает неуправляемые модели. То есть, managed = False
в классе модели Meta
говорит Django не управлять созданием, изменением и удалением каждой таблицы:
class Person(models.Model):
id = models.IntegerField(primary_key=True)
first_name = models.CharField(max_length=70)
class Meta:
managed = False
db_table = 'CENSUS_PERSONS'
Если вы хотите позволить Django управлять жизненным циклом таблицы, вам нужно изменить опцию managed
выше на True
(или удалить ее, поскольку True
является ее значением по умолчанию).
Установите основные таблицы Django¶
Затем выполните команду migrate
, чтобы установить все дополнительные необходимые записи базы данных, такие как права администратора и типы содержимого:
$ python manage.py migrate
Тестирование и настройка¶
Это основные шаги - дальше вы захотите подправить модели, созданные Django, пока они не будут работать так, как вам хотелось бы. Попробуйте получить доступ к данным через API базы данных Django, попробуйте редактировать объекты через админку Django, и отредактируйте файл моделей соответствующим образом.