2013-02-22 6 views

Trả lời

19

import được thực thi trên mọi cuộc gọi chức năng. Đây là hành vi tương tự bạn sẽ nhận được nếu bạn đã viết một mô-đun Python bình thường với câu lệnh import bên trong một hàm chức năng như trái ngược với ở cấp mô-đun.

Có, điều này sẽ ảnh hưởng đến hiệu suất.

Bạn có thể làm việc này bằng bộ nhớ đệm nhập khẩu của bạn như thế này:

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

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

Đây là thừa nhận không phải là rất xinh đẹp, và cách tốt hơn để làm điều này đang được thảo luận, nhưng họ sẽ không xảy ra trước khi PostgreSQL 9.4.

+0

Ah, chỉ sau câu trả lời của bạn, tôi tra cứu trong tài liệu có từ điển toàn cầu SD. Cảm ơn nhiều. – Mauli

+0

@Peter Eisentraut bạn có biết liệu có bất kỳ cải tiến nào đối với vấn đề này trong các phiên bản pg gần đây không? –

+0

Không có bất kỳ thay đổi nào đối với điều này. –