PostgreSQL PL/Python扩展-函数未返回预期结果

but5z9lq  于 2023-08-04  发布在  PostgreSQL
关注(0)|答案(1)|浏览(108)

我遇到了一个使用plpython 3u的PostgreSQL扩展的问题。我已经创建了一个简单的扩展,其中包含一个Python函数,该函数应该用于将两个数字相加。但是,当我执行该函数时,它返回一个空结果,而不是预期的总和。
下面是SQL脚本文件(pg_py_ext-1.0.sql)中的Python函数:

-- pg_py_ext--1.0.sql
-- Create the function that uses the Python script
CREATE OR REPLACE FUNCTION add_numbers(a integer, b integer)
RETURNS integer
LANGUAGE plpython3u
AS $$
def add_numbers(a, b):
    return a + b
$$;

字符串
我已经验证了Python代码,它似乎是正确的。但是,该函数不会返回预期的结果(例如,SELECT add_numbers(3,5)应该返回8,但它返回空结果)。
输出量:

spartacus=# SELECT add_numbers(3, 5);
 add_numbers
-------------

(1 row)


我还检查了PostgreSQL日志中的任何错误消息,但没有相关条目。
PostgreSQL版本:PostgreSQL 15.0
我不知道还有什么可能导致这个问题。如有任何关于如何排除故障和解决此问题的指导或建议,将不胜感激。
提前感谢您的帮助!

mqkwyuun

mqkwyuun1#

PostgreSQL PL/Python扩展不返回预期结果的问题可能是由于Python函数中的return语句不正确。
SQL脚本文件(pg_py_ext-1.0.sql):

-- pg_py_ext--1.0.sql

-- Enable the PL/Python3U language if not already enabled
CREATE EXTENSION IF NOT EXISTS plpython3u;

-- Create the function that uses the Python script
CREATE OR REPLACE FUNCTION add_numbers(a integer, b integer)
RETURNS integer
LANGUAGE plpython3u
AS $$
def add_numbers(a, b):
    return a + b
return add_numbers(int(a), int(b))
$$;

字符串
在更新的版本中,在Python函数中执行加法运算后,我们使用return语句显式地将结果返回给PostgreSQL函数。这应该可以解决问题并返回正确的结果。

相关问题