Существует удаленная база данных, которая не всегда доступна, и мне нужно сохранить часть этой информации в моих app
model
. Я решил использовать apscheduler
для запуска запланированного задания, которое попытается подключиться к этой базе данных и соответствующим образом обновить мой model
. Информация не меняется очень часто, поэтому, например, достаточно одного запуска в день.
На данный момент я решил действовать следующим образом:
- попытаться получитьновые записи из удаленной базы данных
- получают существующие записи из моего локального
app
model
- сравнивают эти наборы и определяют объекты, которые должны быть созданы, обновлены и удалены(на основе значения
specific_entity_id
) - выполнить
bulk_create
на тех объектах, которые должны быть созданы - выполнить
bulk_update
на тех объектах, которые должны быть обновлены - пометьте те объекты, которые должны быть удалены, как
to_be_deleted
, поскольку могут быть некоторые ограничения foreign key
, которые я буду обрабатывать позже
My model
выглядит следующим образом:
class MyModel(models.Model):
specific_entity_id = models.IntegerField()
to_be_deleted = models.BooleanField()
В таблице из удаленной базы данных есть несколько дополнительных полей, которые меня не интересуют. Количество записей не так уж велико.
Мне кажется, что должен быть лучший подход, и мне было интересно, есть лисвоего рода "лучшие практики" для суch операция.