PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie werden Importanweisungen in Plpython gehandhabt?

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.