从PostgreSQL存储过程导入Python文件

时间:2015-06-21 22:02:59

标签: python postgresql stored-procedures

可以在PostgreSQL存储过程中使用Python代码。例如:

var array = [(name: String, value: String)]()
// add elements
array.sort() { $0.name < $1.name }
// or
array.sort() { $0.0 < $1.0 }

但是如何从这段代码中包含一个python文件呢?

在PostgreSQL中运行的Python的当前目录是:

CREATE FUNCTION someProc()
RETURNS void AS $$
    # Some Python3 code...
$$ LANGUAGE plpython3u;

我尝试了以下工作:

>>> os.getcwd()
... /var/lib/postgresql/9.3/main

由于许多明显的原因,这似乎不太好。有没有更好的方法导入python文件,或只是从python文件调用python函数?

编辑:导入文件没有任何特定的PostgreSQL方法。但最好的方法是在正确的答案中,这类似于我原来的解决方案,但它更好。

2 个答案:

答案 0 :(得分:2)

这与从独立Python中的文件动态加载Python代码没什么不同:

PL / Python3(不受信任)只是在PostgreSQL后端进程中运行的cpython解释器,它自己运行的是同一个操作系统用户PostgreSQL。只有很少的差异 - 比如线程安全 - 它只是Python。

答案 1 :(得分:0)

您是否从文档中看到了这一点?

http://www.postgresql.org/docs/9.0/static/plpython.html