问题标签 [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 回答
293 浏览

postgresql - 如何将此 PostgreSQL 函数从 PL/Py 转换为 PL/SQL?

我有一个用 PL/Python 编写的函数。它是一个在 Python 中运行的数据库函数,这是允许的,因为通过以下方式安装了一种过程语言:

(我发现了一个很好的技巧,允许非管理员用户运行,通过使用一个唯一的名称,虽然它与我的问题没有太大关系,我相信你们中的一些人会想知道我是如何做到这一点的,所以下面是答案)

现在到手头的问题,我上面的“hack”对我有用,但是如果我想使用亚马逊的 RDS 服务,我无法安装语言,并且 PL/Python 不可用。然而,SQL 是。

因此,我需要帮助将以下用 Python 编写的函数翻译成纯 SQL。

此功能允许我执行以下查询:

或者

另外,作为一个旁注/次要问题,在我创建函数之后,当我查看 DDL 时,其中有一行写着“安全调用者”,有人知道这意味着什么吗?

0 投票
2 回答
142 浏览

python - 数组函数返回空

这里的目的是调整这个答案以返回数组而不是setof 数据类型。


编辑

笔记

这是一个关于“将 Python 与 PostgreSQL 一起使用”的问题。

我使用PLpythonU是因为员工使用 Python,而且 CSV 很复杂,需要可靠的(多年测试)算法。

不需要解决方法,因为正在使用一个简单的解决方法:

0 投票
1 回答
1129 浏览

python - 如何将此 plpythonu 存储过程插入数据库?

我正在尝试从标准输入读取行,并使用 plpythonu 存储过程将这些行中的数据插入到 PostgreSQL 数据库中。

当我在 Python 3 下调用该过程时,它会运行(为读取的每一行消耗一个序列值),但在 db 中不存储任何数据。当我从 psql 调用相同的过程时,它工作正常,在 db 中插入一行。

例如

操作:SELECT sl_insert_day('2017-01-02', '05:15');以用户 jazcap53 从 psql 中运行
结果:插入 day_id 为 1 的日期。

行动:python3 src/load/load_mcv.py < input.txt在命令行运行
结果:没有插入,但消耗了 2 个串行 day_id。

操作:SELECT sl_insert_day('2017-01-03', '06:15');以用户 jazcap53 从 psql 中运行
结果:插入 day_id 为 4 的日期。

文件:输入.txt:

输出:

我正在运行 Fedora 25、Python 3.6.0 和 PostgreSQL 9.5.6。

非常感谢任何可以帮助我的人!


下面是一个重现此行为的 MCV 示例。我希望我的问题出现在第 8 步或第 6 步中——为了完整性,包括了其他步骤。

用于创建 MCV 的步骤:

步骤 1) 创建数据库:

在 psql 中作为用户 postgres,
创建数据库 sl_test_mcv;

步骤 2) 数据库初始化:

文件:db/database_mcv.ini

步骤 3) 运行数据库配置:

文件:db/config_mcv.py

步骤 4) 创建表:

文件:db/create_tables_mcv.sql

步骤 5) 创建语言:

步骤 6) 创建程序:

文件:db/create_procedures_mcv.sql

步骤 7) 授予权限:

文件:db/grant_privileges_mcv.sql

步骤 8) 以 python3 src/load/load_mcv.py < input.txt 运行程序:

文件:src/load/load_mcv.py

0 投票
1 回答
1098 浏览

json - Postgresql 函数 plpython 选择 json 值

我正在使用 postgresql 9.6。我构建了一个函数,我在其中执行“选择”,例如:

请求工作正常,但结果包含键和值,而不仅仅是值。其实结果是这样的:{"key":2937}

我只想要价值。

0 投票
1 回答
88 浏览

postgresql - 如何实现获取整行的PostgreSQL函数?

例如,我想计算表中每一行的空字段。

我应该使用什么参数类型声明?

我尝试了复合类型(表名作为类型):

但如果我这样称呼它,它与参数类型不匹配:

0 投票
1 回答
2232 浏览

postgresql - 在没有“--with-python”参数的情况下编译数据库后,有没有办法安装 PL/Python?

Ubuntu 14.04.3、PostgreSQL 9.6

也许我可以从 PostgreSQL 9.6 源代码或其他地方获取 plpythonu 源代码,将其放入/contrib目录中,make然后CREATE EXTENSION!?或类似的东西。不想认为 PostgreSQL 重新安装是我唯一的方法。

0 投票
2 回答
565 浏览

postgresql - 如何指示 postgresql plpython 函数参数可以是任何类型?

我正在使用(或尝试)以下功能:

正如我没想到的那样,这不起作用。Postgres 抱怨:

嗯......这很愚蠢,因为本机 Python 函数可以接受任何类型的任何内容,因为变量只是事物的名称。

在这种情况下,我不在乎值的实际类型是什么,我只想能够替换它。我怎样才能在 Postgres/PLPython 中做这样的事情?

0 投票
1 回答
506 浏览

python - 如何针对自定义 Postgresql(例如 PG_CONFIG)构建和安装 PL/Python?

我正在使用 PipelineDB,它是 Postgresql 的一个定制但兼容的分支。我想将 plpythonu.control 安装到其中,以便能够将 PL/Python 用于用户定义的函数。

我应该针对 PipelineDB 安装“构建”plpythonu 扩展,但我找不到 plpythonu 源代码,也找不到任何关于如何“制作”或“构建”它的说明。有人可以指出我正确的方向吗?

0 投票
2 回答
1545 浏览

python - 在 PostgreSQL 中,`print` 的 plpython(3)u 输出到哪里去了?

当我在 PostgreSQL 中创建以下函数时:

输出不会出现在终端中(使用psql -f ...)。它会去哪里?

另外,是否有任何简单的方法(可能是扩展)可以为我提供易于使用的输出stdout/ stderr?我不想使用select它,因为它围绕着所有带有表格装饰的输出,您可以将其关闭,但只能使用psql在函数中不起作用的技巧。同样,我不想使用\echo,因为这在函数定义中不起作用。

编辑我知道plpy.notice(),但是那个函数也用很多混乱来包围它的输出。


顺便说一句,我现在的解决方案是写入文件:

并在后台运行一条尾巴(使用 ANSI 颜色,耶!):

但缺点是我需要外部代码来设置这个东西。

0 投票
1 回答
394 浏览

postgresql - 从 PL/Python 函数中访问 PostgreSQL 函数

有没有办法从 PL/Python 函数中访问 PostgreSQL 函数?

当我在 PL/pgSQL 中编写时,我可以直接调用它们。例如,我可以在 PL/pgSQL 中编写 char_length('Bob'),它会使用内置的 PostgreSQL 函数 char_length。当我为 PL/Python 尝试时,char_length 的错误是未定义的。是否有可以访问内置函数的命名空间?plpy.functions.whatever 或类似的东西?

我在 PostgreSQL 9.5.9 上使用 plpython3u。