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

标签 python postgresql plpython

这个函数调用不会返回“结果”有什么原因吗?

CREATE OR REPLACE FUNCTION myfunction (input int, OUT result int) AS $$

result = mymodule.object(input,plpy)
plpy.info(" ========= EXTRA-module result: ===",result)

$$ LANGUAGE plpythonu;

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

def object(input,plpy):
  import StringIO
  try:
   plan = plpy.prepare("INSERT INTO file VALUES (nextval('primary_sequence'),$1) RETURNING primary_key", ["integer"] )
  except:
   plpy.error(traceback.format_exc())

  try:
   rv = plpy.execute(plan, [ input ])
   result = rv[0]["primary_key"]
   plpy.info(" ========= INTRA-module result: ===",result)
   return result
  except:
   plpy.error(traceback.format_exc())

最佳答案

我不太熟悉 plpython,但如果它抛出一个错误并且没有被打印出来或进一步向上传递,你永远不会知道。

我不知道您是否正在使用命令行进行测试,但请尝试在您的 except block 中放置一个打印语句,看看它是否只是出错而不是返回。

关于python - 从 pl/python 函数调用的 python 模块,如何获取返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7503572/

相关文章:

postgresql - 使用 prisma 和 postgres 的行级安全性

SQL 'DELETE CASCADE'

postgresql - 在postgresql中查找主机名

postgresql - 在 plpython 中处理反斜杠

python - re.split() 给出列表中的空元素

python - 如何手动对多索引数据框中的列进行排序?

python - Python 3 Lambda 函数的输入 JSON 中的十进制数

python - 如何在 Python 中使用 BLE 通知

具有给定角色的 PostgreSQL 触发器

python - 在 postgresql 8 或 9 中安装 plpython