何时(或为何)使用 PLPython(3)u

Che*_*ain 5 postgresql plpgsql plpython

随着我获得更多 PostgreSQL 经验,我开始质疑 PLPython 的存在。它被认为是一种“不受信任”的语言https://www.postgresql.org/docs/10/plpython.html

我想知道的是,何时或为什么有人需要使用它?PLPGSQL 已经是一种非常强大的语言,可以让您做很多事情。这里有人需要使用它吗?如果需要,用途是什么?

jja*_*nes 9

我发现 pl/pgsql 对于一般编程来说很乏味,并且编程和执行都很慢。缺少很多功能——其中一些功能缺失是因为它必须是一种可信语言(没有 IPC 或网络),而其他功能只是因为它尚未构建并且缺乏库/机制模块/包。

我使用 plpython3u 从数据库内部访问化学情报库。从头开始重新实现这些库的功能在理论上是可行的,但完全不切实际。在 pl/pgsql 中这样做是完全不切实际的。

我对 plperlu 和 plperl 做了同样的事情,以访问各种 CPAN Perl 模块。如果这些模块碰巧是 python 而不是 Perl,我会使用 plpythonu 而不是 plperl(u)。

我还使用 plperl(不是 plpythonu,只是因为我更喜欢 Perl 而不是 python)来实现我希望在数据库内部通过 SQL 以及在我们的过程代码中都可用的函数。我本可以在 pl/pgsql 中实现它们,但这会很烦人,而且还意味着它们需要用两种语言来实现。或者,我可以在数据库中实现它们,并在我想从那里调用函数时从独立的 Perl 连接到数据库。但这有时意味着建立一个数据库连接,否则该程序中不需要该连接,并且会滥用我们更有限的资源之一,因为数据库比独立的 Perl 脚本更难扩展。它还会引入延迟。