Синхронизировать данные из внешнего источника в БД, используемые в проекте Django? - PullRequest
0 голосов
/ 12 февраля 2019

Мне нужно синхронизировать данные из csv-файла каждую ночь, чтобы обновить данные в моем проекте django (я использую mysql в качестве бэкэнда).Данные содержат информацию о пользователях - иногда необходимо удалить пользователей, иногда необходимо добавить нового пользователя, а иногда некоторая информация о конкретном пользователе изменилась и требует обновления.Мне нужно держать это в синхронизации.Есть ли встроенные функции для этого (например, manage.py/django-admin)?Пишу ли я скрипт на python и работаю с моими моделями django для манипулирования данными?Это нормально / безопасно работать напрямую с таблицами в базе данных, минуя модели?Что такое лучшая практика?

Я использую Python 3.7 и Django 2.1, если это помогает.

1 Ответ

0 голосов
/ 12 февраля 2019

Нет готовых команд, которые, вероятно, будут соответствовать вашим точным потребностям, но в python есть хорошие утилиты для чтения csv , и вы можете написать собственную команду Django , чтобы прочитать ваш файл csv и добавить, удалите или обновите свои пользовательские модели.

Если у вас нет особых требований - например, огромных наборов данных или других ограничений - я бы порекомендовал взаимодействовать со слоем модели Django для внесения изменений, а не взаимодействовать напрямую сбаза данных.Таким образом, если у вас есть какая-либо специальная проверка в вашей пользовательской модели, которая не представлена ​​на уровне базы данных (варианты выбора, целочисленные диапазоны и т. Д.), Вы избежите введения несоответствий данных.

Окончательное решениев вашей команде рассмотрите возможность использования следующих превосходных методов, которые предоставляет ORM в Django: Manager.get_or_create и Manager.update_or_create .Они полезны, чтобы избежать дублирования данных и изящно указывать ORM создавать или изменять на месте и т. Д.

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...