如何更新数据库中的列记录?

时间:2011-03-10 19:52:43

标签: sql database sql-update

我正在尝试更新数据库中的列中的记录。我目前的代码如下:

curs = conn.cursor()
statement='SELECT column FROM table'
curs.execute(statement)
curs.execute("INSERT INTO table VALUES (4, 'Five')")

根据我的理解,该列的第4行应更新为“Five”。运行后,没有错误,但也没有更新。我的代码肯定有问题,或者我遗漏了一些重要的东西。 如果我想更新整个列的记录怎么办?提前感谢您的任何澄清。

5 个答案:

答案 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种基本操作:

  • SELECT:使用此选项查看数据。 JOIN表,设置WHERE子句等来操纵数据视图。这是最安全的操作(虽然糟糕的SELECT会使服务器的性能下降)。
  • INSERT:这会在表格中插入一行。这是相当安全的,因为它不会改变任何现有数据。
  • 更新:这将更新表格中的一个 _more_行。这里要担心的主要问题是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()

请大家帮忙