我正在尝试更新数据库中的列中的记录。我目前的代码如下:
curs = conn.cursor()
statement='SELECT column FROM table'
curs.execute(statement)
curs.execute("INSERT INTO table VALUES (4, 'Five')")
根据我的理解,该列的第4行应更新为“Five”。运行后,没有错误,但也没有更新。我的代码肯定有问题,或者我遗漏了一些重要的东西。 如果我想更新整个列的记录怎么办?提前感谢您的任何澄清。
答案 0 :(得分:3)
update `table_name` set `column_name` ='value'
虽然你想非常肯定你正在尝试将所有行更新为新的列值,否则你需要添加
where `unique_key` ='unique_value'
答案 1 :(得分:2)
insert
不更新数据库中的值,它会添加记录。您需要使用UPDATE
语句。
答案 2 :(得分:2)
根据您使用MSSQL,Oracle,MySQL的SQL版本,您需要不同的语法。看起来你正在使用MSSQL,所以你要从这开始:
UPDATE table SET column = "Five"
但是你不能只说将第4行设置为X值,SQL不会像Excel电子表格那样保留设置的行数。您将要添加一个int列并将其称为PK_tablename,并将其设置为该表的主键。然后你可以编写这样的语句,它将始终更新正确的行:
UPDATE table SET column = "Five" WHERE PK_tablename = 4
我建议您在SQL帮助中阅读主键。
答案 3 :(得分:1)
您使用的是INSERT
语句,而不是UPDATE
语句。正如其他人所说,这将插入记录而不是更新记录。
简单的SQL查询基本上有4种基本操作:
JOIN
表,设置WHERE
子句等来操纵数据视图。这是最安全的操作(虽然糟糕的SELECT
会使服务器的性能下降)。WHERE
子句。如果您不包含一个,则将更新表中的每个行。通常,您希望首先在WHERE
语句中测试SELECT
子句,以确保您只更新 要更新的行。WHERE
子句,它将删除表中的所有行。测试您的WHERE
子句,确保您只删除 要删除的行。从INSERT
语句的外观来看,您似乎正在尝试根据键(数字4)更新行。基于缺乏错误,它似乎并不是一个关键。如果它是表的键,它将返回一个错误,表示您不能插入带有重复键的行。
似乎(基于问题中的有限信息,自然而然)你想要的东西是这样的:
UPDATE table SET column = 'five' WHERE id = 4
在许多其他地方可以找到更多信息here。
答案 4 :(得分:1)
我使用以下代码解决了我的问题:
conn = psycopg2.connect(conn_string)
curs = conn.cursor()
statement='UPDATE table SET column = false'
curs.execute(statement)
conn.commit()
conn.close()
请大家帮忙