填写单列值的SQL查询

0 投票
1 回答
5586 浏览
提问于 2025-04-18 15:37

我有一个现成的SQL数据库表,通过pyodbc与之交互。我写了一个类,利用pyodbc来和数据库进行交互,主要是读取数据、创建和删除列。现在我需要的最后一个功能是,能够把一个新创建的列(默认里面全是NULL)用一个Python列表中的值填充(我打算遍历这个列表,然后用db.commit()来提交更改)——而不影响其他列,也不添加额外的行。

我尝试了以下的查询,并在一个for循环中进行迭代;

 INSERT INTO table_name (required_column) VALUES (value)

所以这个类的方法是;

    def writeToColumn(self, columnName, tableName, writeData):
    for item in writeData:
        self.cursor.execute('INSERT INTO ' + tableName + '(' + columnName + ') VALUES (' + item + ')')

    self.cursor.commit()

这里的value代表列表中当前的索引值。

但是这样做会添加一整行,并且把其他未提到的列的单元格填充为NULL。

我想要做的是替换某一列中的所有数据,而不影响其他列。有没有什么查询可以做到这一点?

谢谢!

1 个回答

4

这并不奇怪,使用INSERT命令时总是会插入一行新的数据,这也是它名字的由来。如果你想要修改已经存在的数据行,就需要使用UPDATE命令。

UPDATE table_name SET required_column=value WHERE ...

在这里,WHERE条件是用来确定你要修改的那一行数据的,通常是通过主键来识别。

撰写回答