Python psycopg2 调试截断
我遇到了一个问题,我在调用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...
或者转换成这个函数所需要的其他格式