Chapter 43. 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.1.Python 2 vs. Python 3
- 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.3.2.Null, None
- 43.3.1.Data Type Mapping
- 43.4.Sharing Data
- 43.5.Anonymous Code Blocks
- 43.6.Trigger Functions
- 43.7.Database Access
- 43.5.Anonymous Code Blocks
- 43.7.1.Database Access Functions
- 43.7.2.Trapping Errors
- 43.7.1.Database Access Functions
- 43.8.Explicit Subtransactions
- 43.8.1.Subtransaction Context Managers
- 43.8.2.Older Python Versions
- 43.8.1.Subtransaction Context Managers
- 43.9.Utility Functions
- 43.10.Environment Variables
ThePL/Python procedural language allowsPostgreSQL functions to be written in thePython language.
To install PL/Python in a particular database, useCREATE EXTENSION plpythonu, or from the shell command line usecreatelang plpythonudbname (but see alsoSection 43.1).
Tip: If a language is installed intotemplate1, 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 namedplpythonu. A trusted variantplpython 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 asplpythonu.
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.