更新行的plpython函数不起作用
我正在使用PostgreSQL 9.4.7和Python 2.7.6。我正在编写一个plpython函数来更新用户表中的一行,我的代码如下-更新行的plpython函数不起作用,python,postgresql,Python,Postgresql,我正在使用PostgreSQL 9.4.7和Python 2.7.6。我正在编写一个plpython函数来更新用户表中的一行,我的代码如下- CREATE FUNCTION update_user(myid int, mymail text, myname text) RETURNS text AS $$ from plpy import spiexceptions plan=plpy.prepare("UPDATE auth_user SET email=$2, usernam
CREATE FUNCTION update_user(myid int, mymail text, myname text) RETURNS text AS $$
from plpy import spiexceptions
plan=plpy.prepare("UPDATE auth_user SET email=$2, username=$3 WHERE id = $1",
["int"] ["text"]["text"])
rv=plpy.execute(plan, [myid,myemail,myusername])
return rv
$$ LANGUAGE plpythonu;
我能够在postgres DB中成功创建此函数,但当我试图通过postgres shell上的以下命令执行此函数时-选择更新用户(1)xyz@xyz.com@sifymail.com“,”更新名称“
我收到以下错误-
错误:列“amarshukla@sifymail.com“不存在
第1行:选择更新用户(1)amarshukla@sifymail.com","地狱",
有人能告诉我哪里出错了吗?首先,postgresql中的字符串文字必须用单引号括起来,而不是用双引号括起来:
select update_user(1,'xyz@xyz.com@sifymail.com','updatedname');
双引号用于引用列
第二。prepare函数中的参数列表不是正确的python列表。它应该是这样的:
plpy.prepare("UPDATE auth_user SET email=$2, username=$3 WHERE id = $1",
["int", "text", "text"])
非常感谢你。第一个错误我马上就发现了,但在过去的几个小时里,我一直在努力解决第二个错误。我的代码与您的建议配合得很好。