PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come vengono gestite le istruzioni di importazione in plpython?

L'import viene eseguito ad ogni chiamata di funzione. Questo è lo stesso comportamento che avresti se scrivessi un normale modulo Python con import istruzione all'interno di un corpo di funzione come opposto a livello di modulo.

Sì, ciò influirà sulle prestazioni.

Puoi aggirare il problema memorizzando nella cache le tue importazioni in questo modo:

CREATE FUNCTION test() RETURNS text
LANGUAGE plpythonu
AS $$
if 'json' in SD:
    json = SD['json']
else:
    import json
    SD['json'] = json

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

Questo non è certamente molto carino e si stanno discutendo modi migliori per farlo, ma non accadranno prima di PostgreSQL 9.4.