sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cómo se manejan las declaraciones de importación en plpython?

La import se ejecuta en cada llamada de función. Este es el mismo comportamiento que obtendría si escribiera un módulo de Python normal con import instrucción dentro de un cuerpo de función en oposición a nivel de módulo.

Sí, esto afectará el rendimiento.

Puede solucionar esto almacenando en caché sus importaciones de esta manera:

CREATE FUNCTION test() RETURNS text
LANGUAGE plpythonu
AS $$
if 'json' in SD:
    json = SD['json']
else:
    import json
    SD['json'] = json

 return json.dumps(...)
$$;

Es cierto que esto no es muy bonito, y se están discutiendo mejores formas de hacerlo, pero no sucederán antes de PostgreSQL 9.4.