2013-02-22 71 views

回答

19

import在每個函數調用中都執行。如果您在函數體內使用import語句編寫了一個正常的Python模塊,並且在模塊級別選擇了對應模式,那麼這與您將得到相同的行爲。

是的,這會影響性能。

您可以解決此通過緩存進口這樣的:

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

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

這是無可否認的不是很漂亮,和更好的方式來做到這一點正在被討論,但他們不會的PostgreSQL 9.4之前發生。

+0

啊,只有在您的回答後,我在文檔中查找到有全局字典SD。非常感謝你。 – Mauli 2013-02-22 14:15:46

+0

@Peter Eisentraut你知道在最近的pg版本中這個問題是否有任何改進? – 2016-06-30 23:04:33

+0

這沒有任何變化。 – 2016-07-01 02:00:14