I would like to use YAML in some plpython code, but YAML is not included in the python3 extension for PostgreSQL.
My 'import yaml' gets an error that it cannot find yaml.
On my regular Python3 install I did 'pip3 install yaml' which worked fine.
How can I get yaml installed into PostgreSQL?
Thanks.
Some more info for clarification:
Here is the start of a function defined in PG:
-- Default audit trigger
create or replace function sys_audit() returns trigger language plpython3u AS $$
from sys import path
path.append('/usr/local/lib/ez-python-library/PostgreSQL/bin');
from datetime import datetime
from CommonRowFunctions import getPkValue, getRowValue, getRowChanges
keyVal = ''
modData = 'unknown'
...
The module 'CommonRowFunctions' tries to use YAML to configure logging. This module lives in my python library (external to PostgreSQL). This all works if I use a properties file for the log config, but using a dictionary is the preferred method and YAML makes that very easy.
Best Answer
This is a problem specific to EnterpriseDB. PostgreSQL does not ship Python, it merely ships a contrib module which your distribution is set to build against the system's Python. In the case of Windows, there is no Python for them to build against because there is no distribution. You can get any version of Python when you download "python" (more properly cpython). So instead, EnterpriseDB bundles a version of Python they provide as a distribution of PostgreSQL. Previously, that were bundling a statically linked Active State Python, now they're bundling cPython 3.3 (which they can dynamically link in). This is all from the docs here.
To configure your system to use EnterpriseDB Python though, you need to first follow a few steps. From the docs on configuration
There are similar instructions provided for Linux and OSX
After you configure that
pip
andeasy_install
should work fine.