PL/Python - Python Procedural Language
- Table of Contents
- 43.1. Python 2 vs. Python 3
- 43.2. PL/Python Functions
- 43.3. Data Values
-
- 43.3.1. Data Type Mapping
- 43.3.2. Null, None
- 43.3.3. Arrays, Lists
- 43.3.4. Composite Types
- 43.3.5. Set-returning Functions
- 43.4. Sharing Data
- 43.5. Anonymous Code Blocks
- 43.6. Trigger Functions
- 43.7. Database Access
-
- 43.7.1. Database Access Functions
- 43.7.2. Trapping Errors
- 43.8. Explicit Subtransactions
-
- 43.8.1. Subtransaction Context Managers
- 43.8.2. Older Python Versions
- 43.9. Utility Functions
- 43.10. Environment Variables
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 43.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.