PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment les instructions d'importation dans plpython sont-elles gérées ?

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.