Le import
est exécuté à chaque appel de fonction. C'est le même comportement que vous obtiendriez si vous écriviez un module Python normal avec le import
déclaration à l'intérieur d'un corps de fonction par opposition au niveau du module.
Oui, cela affectera les performances.
Vous pouvez contourner ce problème en mettant en cache vos importations comme ceci :
CREATE FUNCTION test() RETURNS text
LANGUAGE plpythonu
AS $$
if 'json' in SD:
json = SD['json']
else:
import json
SD['json'] = json
return json.dumps(...)
$$;
Ce n'est certes pas très joli, et de meilleures façons de le faire sont en cours de discussion, mais elles ne se produiront pas avant PostgreSQL 9.4.