Consultando datos de Odoo con SQL

Gustavo Orrillo
- 13/05/2022 - 2 min. de lectura


Muchas veces necesitamos consultar Odoo y la verdad que exportar vistas de Odoo o crear módulos para generar reportes no es del todo conveniente. Por una variedad de motivos, entre ellos productividad y limitaciones para acceder al ambiente de producción (lo cual no es un detalle menor, darle acceso SSH a un usuario es muchas veces un acto temerario en muchos lugares). Muchas veces es conveniente acceder directamente a la base de datos. No solo más conveniente, sino más rápido (gracias al ORM de Odoo). Por todo esto, se suele dar a unos pocos usuarios autorizados y responsables (detalle no menor) acceso SQL directo a la base de datos.

Para estos usuarios, hay que instalar una herramienta para hacer consultas. Si la seguridad de la base de datos está bien definida se puede instalar pgAdmin en su computadora y acceder a la base de datos directamente. Es una herramienta que con un poco de capacitación, resulta util para usuarios avanzados. Ahora también hay otras herramientas de consulta que son más user-friendly. En mi caso, soy adepto al psql (soy de la vieja escuela).

Consultando con SQL la base de datos presenta las siguientes contras (o desafíos como le diría más de un adepto al coaching):

  • Se saltea todo control de seguridad implementado en Odoo (esto se debe a que estamos salteando el ORM)

  • Muchos administradores le dan el rol odoo al usuario final que desea consultar la base de datos. Esto no es aconsejable por motivos obvios, en esos casos

  • Los campos computados (y no almacenados) no pueden ser consultados (se resuelven en tiempo de ejecución por Odoo)

  • Si no se cuenta con una aplicación de consulta visual, se obliga al usuario final a conocer SQL, lo cual no es precisamente facil para más de un usuario

  • Permitir a los usuarios consultar los datos directamente, puede llegar a ocasionar problemas de performance en el sistema (por ejemplo, hay usuarios que quieren conocer la sumatoria de las ventas por vendedor de los últimos diez años. Para todos los productos y todas las sucursales). Muchas veces dichos problemas de performance ocasionan que directamente no se pueda usar el sistema debido a que los recursos de la base de datos estan abocados a resolver el query.

 Para mitigar las contras anteriormente listadas, se pueden tomar las siguientes medidas:

  • Crear usuarios de consulta que tengan permiso de SELECT sobre las tablas de Odoo.

  • Puede crear las vistas de SQL que respondan las consultas. Odoo antes de la versión 14 para actividades de reporte creaba sus propias vistas, en las cuales ya resolvían todos los joins necesarias (es más, en el caso de account_invoice_report resolvían la conversión por el tipo de cambio). Pero ya esta discontinuada dicha funcionalidad, por ende ahora se debe crear manualmente dichas vistas.

  • Para evitar problemas de performance, copie la base de datos a otro server y otórguele acceso al mismo a los usuarios que necesitan hacer las consultas. Parece más caro, pero a la larga termina siendo la mejor solución desde el punto de vista de performance.

  • Mejor todavía, cree un data-mart con la información de Odoo (por favor, hagalo en otro server)

  • Instalar en los usuarios herramientas de consulta gráfica

  • Estudie el modelo de datos de Odoo y cuales son sus campos computados


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.