Estoy usando el método bulk_create de Django para crear muchas entradas a la vez.
Para garantizar que los cambios solo se confirmen si no hay una excepción, estoy pensando en agregar transaction.atomic() a los bloques de código, pero no estoy seguro de si necesito agregarlo.
Según tengo entendido, solo necesito agregarlo en el Escenario 2 porque en este caso estoy ejecutando más de una consulta.
escenario 1
Crear 1.000 entradas en una consulta
Entry.objects.bulk_create([ Entry(headline='This is a test'), Entry(headline='This is only a test'), # ... ])Escenario 2
Cree 10.000 entradas en lotes de 1.000
Entry.objects.bulk_create([ Entry(headline='This is a test'), Entry(headline='This is only a test'), # ... ], batch_size=1_000)No, no tienes que hacerlo para ninguno de los dos escenarios. De acuerdo con el código fuente de Django , usar transacciones atómicas sería redundante para bulk_create ya que ese método ya usa transacciones atómicas.