问题标签 [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 投票
1 回答
645 浏览

python - PostgreSQL - Python - 触发器 - 访问 current_user

我正在用 plPython 编写一个审计触发器。我不知道如何访问 current_user 变量。它是否可以通过 plpy 以某种方式获得?

我还想知道是否可以将变量传递给触发函数?如果是这样,这是如何完成的?我试过了:

但它不起作用。

谢谢。

0 投票
0 回答
94 浏览

python - 如何使用 plpython 执行基本的 scipy gridddata 插值?

从plpython文档示例griddata 示例迁移到实际工作代码时遇到问题。

让我们假设 'my_table' 具有一些简单参考网格的 x、y 和 z 值,其中 x,y 对是点坐标,z 是该点的值。输入参数是inxiny,它们定义了我们要为其插值的点坐标z

这不起作用,因为我不了解 refvals 发生了什么以及如何将其元素转换为 griddata 的适当数据类型。我正在考虑rdata.frames (我会refvals[,c('x','y')]用来获取 x,y 坐标对)或SQL表(我会使用select x, y from refvals),但该refvals对象是 python 中称为 a 的东西list of dict,我不太了解了解如何正确访问。

我从文档中的语法中收集到可能需要foo = rv[i]["my_column"]循环(例如, )?for i = 0:len

0 投票
1 回答
591 浏览

python - PostgreSQL:在 plpython3u 中设置单值返回函数

我想在 PostgreSQL 中编写一个 plpython3u 函数,它返回一组文本。我偶然发现了一个对我来说很奇怪的难题。根据手册,我可以执行以下操作:

这是一个 Python 函数,它返回一组带有单个文本的行;这么多的作品,我确实得到了预期的输出:

到目前为止,一切都很好。但是,我不想为此目的编写表定义,我想setof record改用,就像在这个例子中一样(碰巧使用整数,但仍然):

现在我们来到有趣的部分。从上面概括,下面的一个或多个公式应该是正确的:要返回一组单个值,要么返回 Python 元组列表、Python 数字列表,要么迭代具有单个值的元组或单个价值观:

事实证明,以上都没有编译,它们都导致 SQL 解析器抛出函数结果类型必须是整数,因为 OUT 参数。由于我的 SQL 解析器不查看 Python 函数内部,这让我怀疑——</p>

在 PostgreSQL 中,不可能定义一个同时returns setof record具有单个out参数的函数;相反,输出类型必须始终定义为表(或通过类似方式)

谁能纠正我?如果事实证明这是真的,那将真的很烦人。我肯定在某个地方犯了错误吗?

0 投票
0 回答
574 浏览

postgresql - 在 Windows 2012(64 位)的 postgres 9.6 中安装 numpy 以在 plpython3u 中使用

我正在尝试安装 numpy 以在 Windows 2012(64 位)的 postgres 9.6 中的 plpython3u 中使用,但我遇到了依赖问题。

1) 我已经从 EnterpriseDB 安装了 Postgres 9.6 和语言包,它会自动安装 Python 3.3。<- 有没有办法安装更新版本的 Python?

我已经完成CREATE EXTENSION plpython3u;并且它工作正常。

我尝试使用以下命令安装 python 模块, pip3.exe install numpypython -m pip install --user numpy numpy-1.12.1 返回错误:

raise RuntimeError("Python version 2.7 or >= 3.4 required.")

如果我尝试安装 numpy==1.10.4 的旧版本,则会出现许多关于 blas 和 atlas 以及 fortran 编译器不可用的错误 - 所以我没有进一步追求这个途径。

2)如果我单独安装 Python 3.6,在创建扩展 plpython3u 时,我得到

错误:无法加载库“C:/Program Files/PostgreSQL/9.6/lib/plpython3.dll”:找不到指定的模块。

DLL位于该位置,但实用程序“depends”显示它是为 python33 而不是 python36 编译的,并且缺少这些依赖项。我可以以某种方式替换 plpython3.dll 文件以使其与 Python 3.6 一起使用吗?

肯定有人在 Windows 的 postgres 中为 plpython3u 安装了 numpy,但到目前为止我找不到任何解决方案。

谢谢

彼得

0 投票
1 回答
6486 浏览

plpython - 无法加载库 plpython3.dll

在 Postgresql 版本 10 中创建扩展时出现错误

无法加载库“C:/Program Files/PostgreSQL/10/lib/plpython3.dll”:找不到指定的模块

注意:在 Window 10 上使用 Postgresql 10

0 投票
2 回答
793 浏览

python - 在使用 PL/Python 编写的布尔存储过程的 PostgreSQL CHECK 约束中,可以更新错误消息的详细信息吗?

问题在(尽管很长)标题中。我有这种方式的代码:

使用此程序:

(这个例子的细节并不重要,我知道有比这更好的方法来验证一个值,比如使用MONEY类型。)

当尝试插入未通过此检查时,我收到以下错误:

(错误/细节描述符是我自己的代码,但是 PostgreSQL 错误有一个错误并提供了一个细节字段。)

我有什么办法可以从我的 Python 程序中更改此错误的“详细信息”部分吗?

0 投票
0 回答
838 浏览

postgresql - 服务器在编译 plpytghon3u 函数时在 postgresql 中意外关闭了连接

在 psql 中定义 PL/Python 函数时,出现错误:

功能:

PostgreSQL 日志:

0 投票
1 回答
154 浏览

python - PL/Python。如何在 where clouse 处使用 None 类型作为整数?

所以,我有一个与以下相同的查询:

如果我的领域dependent_id不是None,它运作良好。但是,如果我None在这个领域有一个,查询就会不正确。因为与你比较时=不一样ISNULL

我尝试使用 if-else 表达式来更正我的查询字符串,但是当查询包含 时IS,我捕获了语法异常。

在我用IS关键字(当我的字段是None)记录我的查询后,我在 PSQL shell 中执行了它,它运行良好。

那么,为什么IS不能在plpythonu存储过程中工作,但仍然可以在本机 SQL 查询中工作呢?

更新:

我在工作中与 DBA 进行了讨论,他认为这是plpythonu类型转换的错误。因为plpy.execute当我们尝试使用IS整数类型时会出现异常。

在您将字段声明为整数并IS在准备步骤中用于查询后,您将在执行步骤中获得语法异常。

解决方法是查询字符串,其中明显指示您的None字段为IS NULLIS NOT NULL

PS对不起我的英语。

0 投票
1 回答
2705 浏览

postgresql - 将 plpython3 扩展添加到 Postgres/timescaledb Alpine Docker Image

我尝试将plpython3扩展名添加到我的timescaledb/ postgres(基于 linux alpine)图像:

当我尝试创建扩展时,出现以下错误:

但是当我在容器中搜索文件时,我可以在不同的目录中找到它们:

如何安装postgresql-plpython3到不同的目录或配置postgres以识别我添加的扩展?

更新

当我只是mv文件时,/usr/local/share/postgresql/extension我得到了错误:

更新 2

所以问题$libdirpg_config --pkglibdir指向/usr/local/lib/postgresqlplpython3.so在里面/usr/lib/postgresql。当我将所有内容移动到相应的/usr/local目录时,我可以成功创建扩展。

这就引出了我希望在哪里找到答案的问题。我怎样才能安装postgresql-plpython3/usr/local/...而不是/usr/...

0 投票
1 回答
142 浏览

postgresql - compose-for-postgresql 中的 Pl/python 和 Pl/r 扩展

一天中的好时光,想问是否有人知道在 IBM Bluemix 云上安装 PostgreSQL 扩展(准确地说是 pl/r 和 pl/python)的方法是什么?我在那里运行 compose-postgresql 数据库,当我发出 postgresql 查询(例如“创建扩展 plpythonu”)时出现错误:“错误:无法打开扩展控制文件”/usr/local/postgres/9.6.6/share/extension /plpythonu.control": 没有这样的文件或目录'。pl/r 也一样。如果有人帮助,将不胜感激。