Chapter 42. PL/Python - Python Procedural Language

Table of Contents
42.1. Python 2 vs. Python 3
42.2. PL/Python Functions
42.3. Data Values
42.3.1. Data Type Mapping
42.3.2. Null, None
42.3.3. Arrays, Lists
42.3.4. Composite Types
42.3.5. Set-returning Functions
42.4. Sharing Data
42.5. Anonymous Code Blocks
42.6. Trigger Functions
42.7. Database Access
42.7.1. Database Access Functions
42.7.2. Trapping Errors
42.8. Explicit Subtransactions
42.9. Utility Functions
42.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 42.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.