Chapter 41. PL/Python - Python Procedural Language

Table of Contents
41.1. Python 2 vs. Python 3
41.2. PL/Python Functions
41.3. Data Values
41.3.1. Data Type Mapping
41.3.2. Null, None
41.3.3. Arrays, Lists
41.3.4. Composite Types
41.3.5. Set-returning Functions
41.4. Sharing Data
41.5. Anonymous Code Blocks
41.6. Trigger Functions
41.7. Database Access
41.7.1. Database Access Functions
41.7.2. Trapping Errors
41.8. Explicit Subtransactions
41.8.1. Subtransaction Context Managers
41.8.2. Older Python Versions
41.9. Utility Functions
41.10. Environment Variables

Note: At present, this section is just taken from PostgreSQL documentation and is subject to revision for Postgres-XC.

The PL/Python procedural language allows PostgreSQL functions to be written in the Python language.

To install PL/Python in a particular database, use CREATE EXTENSION plpythonu, or from the shell command line use createlang plpythonu dbname (but see also Section 41.1).

Tip: If a language is installed into template1, all subsequently created databases will have the language installed automatically.

As of PostgreSQL 7.4, PL/Python is only available as an "untrusted" language, meaning it does not offer any way of restricting what users can do in it. It has therefore been renamed to plpythonu. The trusted variant plpython might become available again in future, if a new secure execution mechanism is developed in Python. The writer of a function in untrusted PL/Python must take care that the function cannot be used to do anything unwanted, since it will be able to do anything that could be done by a user logged in as the database administrator. Only superusers can create functions in untrusted languages such as plpythonu.

Note: Users of source packages must specially enable the build of PL/Python during the installation process. (Refer to the installation instructions for more information.) Users of binary packages might find PL/Python in a separate subpackage.