Acelerando el proceso de creacion de registros

Gustavo Orrillo
- 08/11/2021 - 1 min. de lectura


Este es un truco que sirve para las importaciones, y que acelera bastante el tiempo de inserción de registros. El parametro vals de la función create del ORM, puede recibir tanto un diccionario como una lista de diccionarios:

vals = {
    'name': 'Carlos',
    'login': 'carlos@x.com'
}
user = self.env['res.users'].create(vals)

El código lo que hace es crear un solo usuario. Si lo repetimos 100 veces, creará 100 usuarios de a uno a la vez (con los costos relacionados a nivel ORM y base de datos).  Ahora, supongamos que queremos crear dos usuarios en una sola pasada; en ese caso podemos pasarle a la 

user_list = [
{'name': 'Carlos','login': 'carlos@x.com'}, 
{'name': 'Jose','login': 'jose@x.com'},
]
users = self.env['res.users'].create(user_list)

Esto creará dos usuarios (o la cantidad de usuarios incluidos en la lista) en una sola pasada. Con los consiguientes ahorros en el overhead del ORM y base de datos. Lo probé con una migración de usuarios en la que tenía que importar miles de usuarios, y el tiempo de importación se redujo en dos tercios. Lo mismo cuando utilice el mismo truco importando padrones de ARBA.

Acerca de:

Gustavo Orrillo

Passionate about programming, he has implemented Odoo for different types of businesses since 2010. In Moldeo Interactive he is a founding Partner and Programmer; In addition to writing on the Blog about different topics related to the developments he makes.