Несмотря на то, что 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
).
Теперь, запустите команду migrate
для добавления в базу данных необходимых записей, таких как права пользователей и типы контента:
$ python manage.py migrate
Это были основные шаги. Теперь вам может потребоваться изменить созданные модели, чтобы они работали так, как вам необходимо. Попробуйте обратиться к данным через API баз данных Django, отредактировать их с помощью интерфейса администратора или изменить сам файл с моделями.
Jun 05, 2017