Python psycopg2 调试截断

0 投票
1 回答
506 浏览
提问于 2025-04-18 09:16

我遇到了一个问题,我在调用PostgreSQL的一个函数时,传入的参数类型不对:

函数 system.set_user_data(未知类型, 整数, 未知类型, 文本数组[], 文本数组[], 文本数组[], 文本数组[], 文本数组[], 文本数组[], 未知类型, 未知类型, 布尔值, 布尔值, 未知类型, 未知类型, 整数, 未知类型, 整数, 布尔值, 整数) 不存在。第1行:SELECT * FROM system.set_user_data('Thomas... ^ 提示:没有函数与给定的名称和参数类型匹配。你可能需要添加明确的类型转换。

(我无法访问PostgreSQL的日志,所以看不到具体的调用情况。)

但是在“system.set_user_data('Thomas...”被截断的情况下,我无法看到调用的完整样子,这样就没法调查问题到底出在哪里。

有没有办法可以打印出函数调用的内容,包括“SELECT * FROM (函数名)”和所有输入参数?

1 个回答

1

使用 cursor.mogrify() 方法

print cursor.mogrify(my_query, (param1, param2))

http://initd.org/psycopg/docs/cursor.html

不过我猜你需要把 'Thomas' 转换成文本格式

SELECT * FROM system.set_user_data('Thomas'::text...

或者转换成这个函数所需要的其他格式

撰写回答