Рубрики
Без рубрики

Django – DB Bulk_Create ()

Bulk_Create () От Django DOC: этот метод вставляет представленный список объектов в … Помечено Python, Django, база данных, запрос.

bulk_create ()

От Django Doc :

Этот метод вставляет предоставленный список объектов в базу данных эффективным способом (вообще всего 1 запрос, независимо от того, сколько существ есть):

Таким образом, вместо того, чтобы вставлять данные в БД один за другим неэффективным образом, лучше использовать этот метод.

Метод API Деталь:

bulk_create(objs, batch_size=None, ignore_conflicts=False)

Пример:

>>> MyModel.objects.bulk_create([
...     MyModel(title='This is a test'),
...     MyModel(title='This is only an another test'),
... ])

batch_size Параметр контролирует, сколько объектов создается в одном запросе. По умолчанию необходимо создать все объекты в одной партии, за исключением SQLite, где используется по умолчанию, что при большинстве 999 переменных на запрос используются.

О базах данных, которые поддерживают его (все кроме PostgreSQL <9.5 и Oracle), устанавливая lightore_conflicts Параметр (этот параметр был добавлен в Django 2.2 ) на Правда Сообщает базу данных игнорировать неспособность вставить любые строки, которые не ограничивают ограничения, такие как дублирующие уникальные значения. Включение этого параметра отключает настройку первичного ключа на каждом экземпляре модели (если база данных обычно поддерживает ее).

Еще один пример использования Понимание списка Python К ящику Multi DB Модель объектов:

objs = [
    Message(
        name=e.name,
        subject=e.subject,
        content=e.content,
        sender_name=e.sender_name
    )
    for e in query_list
]
msg = Message.objects.bulk_create(objs=objs)

# or use it like below but it is better to explicitly
# assign the keyword arguments as above
# msg = Message.objects.bulk_create(objs)

Важно :

Пожалуйста, посмотрите количество предостережений этого метода в Документация Отказ Такие как модель Сохранить () Метод не будет вызван, а Pre_save и post_save сигналы не будут отправлены.

Все сделано!

Оригинал: “https://dev.to/serhatteker/django-db-bulkcreate-1cb8”