问题标签 [plpython]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2064 浏览

python - 从 pl/python 函数调用的 python 模块,如何获取返回值?

这个函数调用是否有任何理由不会返回“结果”?

=== mymodule的内容============

0 投票
4 回答
11183 浏览

postgresql - 如何为 postgres pl/python 安装 3rd 方模块?

我需要在我的 pl/python 函数中导入第 3 方模块。似乎 pl/python 使用了一个没有任何 3rd 方模块的内部 python。

我收到这种错误:

如何将模块安装到 pl/python 中,以便可以从存储过程代码中导入它?

0 投票
1 回答
1647 浏览

postgresql - 在 Postgres PL/Python 中加载 dll 库的正确方法是什么?

以下给出错误

错误信息:

它在 python 解释器中运行良好。

0 投票
1 回答
774 浏览

postgresql - Postgresql 中的 PLPython 和 CAST 复合数据类型

我正在使用用户定义的类型在 PlPython 中编写一个存储过程。我知道 Plpython 不支持用户定义的类型,所以,我为用户定义的类型创建了一个 CAST。当我调用 plpy.prepare 时,我仍然不断收到错误消息。我不确定我是否错误地使用了 CAST - 示例代码如下:

0 投票
2 回答
1909 浏览

python - PostgreSQL PL/Python:在 virtualenv 中调用存储过程

当我在我的 Python 应用程序中调用 PostgreSQL PL/Python 存储过程时,它似乎是在以 user 身份运行的单独进程中执行的postgres。到目前为止,这只产生了我必须让我的日志文件对我自己和数据库用户都可写的副作用,因此应用程序和存储过程都可以写入它。

然而,现在,我开始使用virtualenv并将一些.pth文件添加到我的~/.virtualenvs/virt_env/lib/python2.7/site-packages/文件夹中,这些文件将我的模块的路径添加到 Python 路径中。

执行存储过程时,用户postgres和我不在同一个虚拟环境中,所以存储过程找不到我的模块。我可以PYTHONPATH全局 PostgreSQL 环境中进行修改,但每次切换虚拟环境时都必须更改它——这有点违背 virtualenv 的目的......

如何扩展存储过程的 Python 路径?

更新

已经提出了一个类似的问题,解决方案是修改 Postgres 中的 PYTHONPATH 环境变量;但是,似乎没有为 PostgreSQL 指定环境变量的标准方法;至少,它在 Mac OSX 上不是一个可行的解决方案。

0 投票
2 回答
594 浏览

python - 将 PL/Pythonu 与 virtualenv 一起使用

我正在使用 postgres 中的 PL/Pythonu 扩展在 python 中的 postgres 中编写函数。我希望 postgres 使用我的虚拟环境(我正在使用 virtualenv)而不是全局安装。我该怎么做呢?

0 投票
2 回答
1600 浏览

postgresql - PL/Python 或 Psycopg2

我有一个 Postgresql 9.1 服务器,我想在 Python 上编写一些函数。

有 2 种方法:plpypsycopg2。对我来说,在 plpy 中编写函数就像一场噩梦,大量的“准备”和“执行”方法……使用起来更舒服psycopg2,但我关心的是效率。

在服务器上使用 psycopg2 是否正确?

0 投票
2 回答
5702 浏览

postgresql-9.1 - 安装plpython时Postgres数据库崩溃

我正在尝试在我的 Postgres 9.1 中安装 plpython,但它使服务器崩溃:

我安装了 python 2.6.8 并且处理程序在系统中声明是正确的:

并且处理程序安装在 $libdir 中:

对此的任何线索将不胜感激

编辑

我尝试过创建扩展 plpythonu、plpython2u 和 plpython3u,但它们都使服务器崩溃。

在文档中阅读了一些内容,我发现 \dx 命令列出了已安装的扩展:

所以我猜唯一安装的扩展是plpgsql。

和我的扩展目录:

编辑

我在 Linux SuSE 上运行,但明白了你的意思。

在我的 postgres 安装中,pl-lang 库位于 .../postgres/9.1/lib/postgres。里面有 plpython2.so 和 plpython3.so

检查这些文件的动态链接库:

没有引用任何 python 库,也没有引用 plpython3.so

但我已经安装了 python 2.6 和 python 3.2。请注意,我希望安装 python 2 的扩展。

是的,CREATE EXTENSION 仍然崩溃:

0 投票
1 回答
202 浏览

stored-procedures - 我可以在 postgres 和 plpython 之间共享复合类型吗

我有一个名为 tt 的复合类型,供我的所有 plpgsql 和 plpythonu 过程使用。有没有某种plpy。以一致的方式访问目录或模式以派生类型或可迭代结构以返回而不必在 plpythonu 过程中定义类的方法?

0 投票
1 回答
4544 浏览

postgresql - 在事务中包装 postgresql 命令:truncate vs delete 或 upsert/merge

我在 postgresql 9.1.3 中使用以下命令将数据从临时登台表移动到 webapp(地理服务器)中使用的表,所有这些都在同一个数据库中。然后删除临时表。

  1. 截断表_富;

  2. 插入到 table_foo

    选择 * FROM table_temp;

  3. 删除表 table_temp;

我想将其包装在事务中以允许并发。数据集小于 2000 行,截断比删除快。

  • 在事务中运行这些命令的最佳方式是什么?
  • 是否建议在 CTE 中创建函数或编写 UPSERT/MERGE 等?
  • 删除所有行然后从临时表中批量插入而不是 TRUNCATE 会更好吗?
  • 在 postgres 中,哪个允许回滚 TRUNCATE 或 DELETE?
  • 临时表每天通过在 arcpy 中编写的 ETL 交付,如何在 postgres 中自动执行截断/删除/批量插入部分?
  • 我愿意使用 PL/pgsql、PL/python(或 postgres 推荐的 py)

目前,在将临时临时表导入我的数据库后,我正在手动执行 sql 命令。