Der import
wird bei jedem Funktionsaufruf ausgeführt. Dies ist dasselbe Verhalten, das Sie erhalten würden, wenn Sie ein normales Python-Modul mit import
schreiben würden -Anweisung innerhalb eines Funktionskörpers im Gegensatz zur Modulebene.
Ja, dies wirkt sich auf die Leistung aus.
Sie können dies umgehen, indem Sie Ihre Importe wie folgt zwischenspeichern:
CREATE FUNCTION test() RETURNS text
LANGUAGE plpythonu
AS $$
if 'json' in SD:
json = SD['json']
else:
import json
SD['json'] = json
return json.dumps(...)
$$;
Das ist zugegebenermaßen nicht sehr hübsch, und es werden bessere Wege diskutiert, aber sie werden nicht vor PostgreSQL 9.4 passieren.