gpt4 book ai didi

python - 用于更新行的 plpython 函数不起作用

转载 作者:行者123 更新时间:2023-11-29 12:58:35 24 4
gpt4 key购买 nike

我正在使用 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, username=$3 WHERE id = $1",
["int"] ["text"]["text"])
rv=plpy.execute(plan, [myid,myemail,myusername])
return rv
$$ LANGUAGE plpythonu;

我能够在 postgres 数据库中成功创建这个函数,但是当我试图通过以下命令在 postgres shell 上执行它时-
选择 update_user(1,"xyz@xyz.com@sifymail.com","updatedname");
我收到以下错误 -
错误:列“amarshukla@sifymail.com”不存在
第 1 行:选择 update_user(1,"amarshukla@sifymail.com","hell");
谁能指出我哪里出错了?

最佳答案

首先,postgresql 中的字符串文字必须用单引号括起来,而不是双引号:

select update_user(1,'xyz@xyz.com@sifymail.com','updatedname');

双引号用于引用列。

其次。准备函数中的参数列表不是正确的 python 列表。它应该看起来像:

plpy.prepare("UPDATE auth_user SET email=$2, username=$3 WHERE id = $1",
["int", "text", "text"])

关于python - 用于更新行的 plpython 函数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36430336/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com