The PL/Python procedural language allows PostgreSQL functions to be written in the Python language.
The current version of PL/Python functions as a trusted language
only; access to the file system and other local resources is
disabled. Specifically, PL/Python uses the Python restricted
execution environment, further restricts it to prevent the use
of the file
open call, and allows
only modules from a specific list to be imported. Presently,
that list includes: array, bisect, binascii, calendar, cmath,
codecs, errno, marshal, math, md5, mpz, operator, pcre, pickle,
random, re, regex, sre, sha, string, StringIO, struct, time,
whrandom, and zlib.
In the current version, any database error encountered while running a PL/Python function will result in the immediate termination of that function by the server. It is not possible to trap error conditions using Python try ... catch constructs. For example, a syntax error in an SQL statement passed to the plpy.execute() call will terminate the function. This behavior may be changed in a future release.
If you see anything in the documentation that is not correct, does not match your experience with the particular feature or requires further clarification, please use this form to report a documentation issue.