Интеграция Django с существующей базой данных¶
Несмотря на то, что Django нацелена на разработку новых приложений, довольно несложно подключить к ней базу данных, унаследованную от другого проекта. Django предоставляет ряд утилит для автоматизации данного процесса, насколько это возможно.
Этот документ предполагает, что вы знакомы с основами Django, которые описаны в учебнике
После настройки Django следуйте стандартному процессу для интеграции с существующей базой данных.
Предоставьте Django параметры вашей базы данных¶
Вам потребуется указать параметры соединения с вашей базой данных и её имя. Делается это редактированием параметра DATABASES, указав значения для следующих ключей соединения 'default':
Автоматическая генерация моделей¶
Django представляет утилиту inspectdb, которая может создавать модели по существующей базе данных. Вы можете посмотреть результат, запустив следующую команду:
$ python manage.py inspectdb
Сохраните его в файл, используя стандартный механизм перенаправления Unix:
$ python manage.py inspectdb > models.py
Обратитесь к документации на inspectdb для подробностей.
После приведения моделей в нормальный вид, сохраните их в
файле models.py, разместив его в пакете, который хранит ваше приложение. Затем добавьте ваше приложение в
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
Тестирование и настройка¶
Those are the basic steps – from here you’ll want to tweak the models Django generated until they work the way you’d like. Try accessing your data via the Django database API, and try editing objects via Django’s admin site, and edit the models file accordingly.