Acelerando el proceso de creacion de registros

Gustavo Orrillo
- 11/08/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

Apasionado de la programación, implementa Odoo para distintos tipos de negocios desde el año 2010. En Moldeo Interactive es Socio fundador y Programador; además de escribir en el Blog sobre distintos temas relacionados a los desarrollos que realiza.