Как сохранить больше 1000 элементов в SQL через Tortoise-ORM?

Чтобы сохранить больше 1000 элементов в SQL с использованием Tortoise-ORM, вы можете использовать два подхода: пакетную вставку (bulk insert) и массовое обновление (bulk update).

1. Пакетная вставка:
Пакетная вставка позволяет вставить большое количество записей в базу данных за одну операцию, что может значительно увеличить производительность при вставке большого количества данных.
В Tortoise-ORM для выполнения пакетной вставки вы можете использовать метод .bulk_create() для списка экземпляров модели, которые нужно вставить. Пример:

   from tortoise import fields, models

   class MyModel(models.Model):
       name = fields.CharField(max_length=255)

   # Создаем список экземпляров MyModel
   models_to_insert = [MyModel(name=f"Item {i}") for i in range(1000)]

   # Выполняем пакетную вставку
   MyModel.bulk_create(models_to_insert)

Здесь мы создаем список экземпляров MyModel и передаем его в метод .bulk_create().

2. Массовое обновление:
Если вам нужно обновить большое количество записей в базе данных, вы можете использовать массовое обновление для увеличения производительности. В Tortoise-ORM для выполнения массового обновления можно использовать метод .bulk_update() для списка экземпляров модели с обновленными значениями. Пример:

   from tortoise import fields, models

   class MyModel(models.Model):
       name = fields.CharField(max_length=255)

   # Получаем список экземпляров MyModel, которые нужно обновить
   models_to_update = await MyModel.filter(id__in=[1, 2, 3...]).all()

   # Обновляем значения поля name для всех экземпляров
   for model in models_to_update:
       model.name = "New Name"

   # Выполняем массовое обновление
   await MyModel.bulk_update(models_to_update, fields=["name"])

Здесь мы получаем список экземпляров MyModel, которые мы хотим обновить, и изменяем значения поля name для каждого экземпляра. Затем мы выполняем массовое обновление, передав список экземпляров и список полей, которые нужно обновить (["name"] в данном случае).

Оба подхода - пакетная вставка и массовое обновление - могут значительно увеличить производительность при работе с большим количеством данных, поэтому выбор подхода будет зависеть от того, что именно вы хотите сделать: вставка или обновление.