Django Transaction.atomic() Vs SQLAlchemy session для массового обновления
Я пытаюсь найти лучший способ массового обновления БД MySQL с помощью python
в настоящее время у меня есть следующие способы:
req_model.objects.bulk_update(update_queries, list(column_to_update))
В этом методе проблема заключается в части выборки, необходимой для update_queries
который представляет собой список обновленных объектов модели
прочесывая интернет, я узнал о транзакции Django transaction.atomic():
with transaction.atomic():
for key, value in user_ids_dict:
model.objects.filter(id=key).update(some_value=value)
Другая проблема заключается в том, что Django не поддерживает составные первичные ключи, кроме как указывая их в метаклассе
другой метод (который я сейчас использую) - это использование сессий SQLAlchemy (это работает, но очень медленно из-за ограничений сервера):
self.init_session()
self.execute_bulk_update(model, mappings)
self.session.commit()
model - список dicts, содержащих обновления и отображения - модель SQLAlchemy atomic() быстрее сессии?
Я также с радостью приму любые другие лучшие предложения по расширению таблиц.
Вы также можете использовать простой python, соединяясь с вашей БД MySQL, а не django или flask sqlalchemy orm. Посмотрите этот пост, он может помочь вам.