gpt4 book ai didi

python:psycopg2:psql:删除条件所在的行

转载 作者:行者123 更新时间:2023-12-04 18:03:19 25 4
gpt4 key购买 nike

我正在尝试根据条件从 psql 表中删除行。

如果“TagNaam”列等于变量 var_tagnaam,我希望删除所有行。

我已经尝试了以下代码和一些变体,但我无法让它工作。不过没有任何错误。

cur.execute("DELETE FROM opc_actuelewaardentags WHERE 'TagNaam' = %s", (var_tagnaam,))

语法有问题吗?

编辑:也许用额外的代码更清楚,错误可能在其他代码中?

for i in range(len(taginhoud)):
(var_tagnaam, var_tagwaarde, var_tagkwaliteit, var_tagtime) = taginhoud[i]
print (var_tagnaam)

cur.execute("DELETE FROM opc_actuelewaardentags WHERE 'TagNaam' = %s", (var_tagnaam,))
conn.commit()

cur.execute('INSERT INTO opc_actuelewaardentags ("TagNaam", "TagWaarde", "TagKwaliteit", create_date, write_date) VALUES (%s,%s,%s,now(),now())',
(var_tagnaam, var_tagwaarde, var_tagkwaliteit))
conn.commit()

所以我在这里尝试做的是:

从列表“taginhoud”中检索“var_tagnaam”。

然后在表 opc_actuelewaardentags 中找到列“Tagnaam”等于“var_tagnaam”中的值的所有行。 (应该是字符串)

然后删除那些“Tagnaam”=“var_tagnaam”的行。这部分不起作用。

然后插入带有数据的新行。这部分有效。

这段代码会不会做我想做的事情是错误的?

我已经尝试了很多方法来解决大写/小写问题。

编辑 2:pgadmin 中的查询有效,试图在 python 中做同样的事情:

我在 pgadmin 中运行了这个查询,它删除了行:

delete FROM opc_actuelewaardentags where "TagNaam" = 'Bakkerij.Device1.DB100INT8';

我试图让它在 python 中尽可能相似:

var_tagnaam2 = "'"+var_tagnaam+"'"
cur.execute("DELETE FROM opc_actuelewaardentags WHERE \"TagNaam\" = %s", (var_tagnaam2,))
conn.commit()

试图转义双引号以使其与 pgadmin 中的相同。

最佳答案

'TagNaam' 不是 sql 语言中的有效 column_name 标识符。数据库名、表名、列名不能使用单引号 或双引号 ,可以使用撇号(`)。

无效:

DELETE FROM opc_actuelewaardentags WHERE 'TagNaam' = 'test';

DELETE FROM opc_actuelewaardentags WHERE "TagNaam"= 'test';

有效:

DELETE FROM opc_actuelewaardentags WHERE TagNaam = 'test';
DELETE FROM opc_actuelewaardentags WHERE `TagNaam` = 'test';
DELETE FROM opc_actuelewaardentags WHERE "TagNaam" = 'test';

更新:根据 PSQL 文档,双引号是表名和列名中的有效字符。当使用 a 作为表名或列名时,它特别用于关键字。所以以下是有效的:

DELETE FROM opc_actuelewaardentags WHERE "TagNaam" = 'test';

More is here...

关于python:psycopg2:psql:删除条件所在的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31557559/

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