Кеширующий стол в моделях Django - PullRequest
0 голосов
/ 28 октября 2019

Существует удаленная база данных, которая не всегда доступна, и мне нужно сохранить часть этой информации в моих 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 операция.

...