Chapter 49. PL/Python — Python Procedural Language

Table of Contents

49.1. PL/Python Functions
49.2. Data Values
49.2.1. Data Type Mapping
49.2.2. Null, None
49.2.3. Arrays, Lists
49.2.4. Composite Types
49.2.5. Set-Returning Functions
49.3. Sharing Data
49.4. Anonymous Code Blocks
49.5. Trigger Functions
49.6. Database Access
49.6.1. Database Access Functions
49.6.2. Trapping Errors
49.7. Explicit Subtransactions
49.8. Transaction Management
49.9. Utility Functions
49.10. Python 2 vs. Python 3
49.11. Environment Variables

The PL/Python procedural language allows Postgres Pro functions and procedures to be written in the Python language.

To install PL/Python in a particular database, use CREATE EXTENSION plpython3u.

Tip

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

PL/Python is only available as an untrusted language, meaning it does not offer any way of restricting what users can do in it and is therefore named plpython3u. A trusted variant plpython might become available in the future if a 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 plpython3u.

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.