Chapter 46. PL/Python - Python Procedural Language
Table of Contents
- 46.1. Python 2 vs. Python 3
- 46.2. PL/Python Functions
- 46.3. Data Values
- 46.4. Sharing Data
- 46.5. Anonymous Code Blocks
- 46.6. Trigger Functions
- 46.7. Database Access
- 46.8. Explicit Subtransactions
- 46.9. Transaction Management
- 46.10. Utility Functions
- 46.11. 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 (but
see also Section 46.1).
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
plpythonu. A trusted
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
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.