Чтобы сохранить больше 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"]
в данном случае).
Оба подхода - пакетная вставка и массовое обновление - могут значительно увеличить производительность при работе с большим количеством данных, поэтому выбор подхода будет зависеть от того, что именно вы хотите сделать: вставка или обновление.