PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como as instruções de importação em plpython são tratadas?


A import é executado em cada chamada de função. Este é o mesmo comportamento que você obteria se escrevesse um módulo Python normal com o import instrução dentro de um corpo de função em oposição ao nível do módulo.

Sim, isso afetará o desempenho.

Você pode contornar isso armazenando em cache suas importações assim:
CREATE FUNCTION test() RETURNS text
LANGUAGE plpythonu
AS $$
if 'json' in SD:
    json = SD['json']
else:
    import json
    SD['json'] = json

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

Isso não é muito bonito, e melhores maneiras de fazer isso estão sendo discutidas, mas elas não acontecerão antes do PostgreSQL 9.4.