Importing Python file from PostgreSQL stored procedure
本问题已经有最佳答案,请猛点这里访问。
PostgreSQL存储过程中可能有python代码。例如:
1 2 3 4 | CREATE FUNCTION someProc() RETURNS void AS $$ # Some Python3 code... $$ LANGUAGE plpython3u; |
但是如何从代码中包含一个python文件呢?
PostgreSQL中运行的python的当前目录是:
1 2 | >>> os.getcwd() ... /var/lib/postgresql/9.3/main |
我尝试了以下方法,这是有效的:
1 2 3 4 5 6 7 | CREATE FUNCTION someProc() RETURNS void AS $$ import sys sys.path.append("/dir/to/file") from python_file import pythonFunction # More Python code $$ LANGUAGE plpython3u; |
由于许多明显的原因,这似乎不是很好。有没有更好的方法导入一个python文件,或者只是从一个python文件调用一个python函数?
编辑:没有任何特定的PostgreSQL方法来导入文件。但最好的办法是在下面的正确答案,这类似于我的原始解决方案,但它是更好的。
这与从独立python中的文件动态加载python代码没有区别:
- 如何导入给定完整路径的模块?
pl/python3(不可信)只是运行在postgresql后端进程中的cpython解释器,与它自己运行的操作系统用户postgresql相同。有一些区别——比如线程安全——它只是Python。
你从文件中看到这个了吗?
http://www.postgresql.org/docs/9.0/static/plpython.html