Как интегрировать Django с унаследованной базой данных

Хотя 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, и отредактируйте файл моделей соответствующим образом.

Вернуться на верх