Доступ к существующим данным в таблице SQL Server с помощью Django

Я подключил django к SQL Server с помощью django-pyodbc-azure. Я новичок в Джанго. Я создал модель в django models.py и смог перенести модель на SQL Server. Все правильные таблицы созданы.

У меня есть исторические данные, которые в конечном итоге будут обслуживаться приложением. Можно ли получить доступ к существующей таблице, которая содержит эти исторические данные в той же БД? Или разумнее просто загрузить исторические данные в новую таблицу, созданную django?

Концептуально, я думаю, что было бы возможно сделать модели (либо через inspectdb, либо вручную) для существующих таблиц. Однако добавление этих моделей приведет к тому, что django создаст новые таблицы при выполнении миграции, а не узнает, что таблицы уже существуют.

Что такое лучшая практика? Я думаю, что было бы проще создать все новые таблицы, а затем настроить задания в агенте для загрузки исторических данных в эти новые таблицы.

1 ответ

Решение

Если вы на 100% уверены, что можете описать точный формат и ограничения вашей исторической таблицы в модели Django, то вы можете попробовать сделать это и запустить makemigrations а затем с помощью --fake-initial тег. Это рекомендуемый процесс при инициализации нового приложения с существующей базой данных.

По сути, вы говорите Django, как должна выглядеть таблица, но не просите ее настроить таблицу для вас, потому что она уже существует. Тем не менее, убедитесь, что Django имеет правильное имя для таблицы - настроить имена таблиц может быть сложно.

Однако, если у вас есть какие-либо сомнения по поводу настройки модели, которая идеально описывает вашу таблицу, то создайте новую таблицу и просто загрузите в нее старые данные. Это было бы чище, потому что вы знаете, что у Django есть вся необходимая информация о столе. Это также позволяет применять новые ограничения к входящим данным, если ваши старые данные не являются чистыми или могут содержать дубликаты.

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