How are import statements in plpython handled?
Question: I have a plypython function which does some json magic. For this it obviously
imports the json library.

Is the import called on every call to the function? Are there any performance
implication I have to be aware of?


Answer: The `import` is executed on every function call. This is the same behavior you
would get if you wrote a normal Python module with the `import` statement
inside a function body as oppposed to at the module level.

Yes, this will affect performance.

You can work around this by caching your imports like this:

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

This is admittedly not very pretty, and better ways to do this are being
discussed, but they won't happen before PostgreSQL 9.4.

