首页 > 解决方案 > 我需要什么 SQL 语句将数据插入当前为“空”的多行?

问题描述

我有这种格式的数据,我想在我的 mysql 数据库中输入一列。我创建的列是空的,具有空值。

[(1958000,),
(261250,),
(205480,),
(140580,),
(804320,),
(652653,),
(484990,),]

我正在使用 python 使用以下代码插入数据:

sql = "INSERT INTO city(Population) VALUES(%s)"
new_column_data = The data I listed above. 

mycursor.executemany(sql, new_column_data)

当我运行它时,它将数据插入到从 Population 中所有“null”值开始的行中。

像这样的东西会起作用吗?

sql = "INSERT INTO city(Population) VALUES(%s) WHERE Population = 'null'"

任何帮助将不胜感激!

标签: pythonmysqlsqlsql-insertmysql-error-1064

解决方案


NULL您最快的解决方案是在插入新数据之前删除列。

你必须通过运行类似的东西来做到这一点:

DELETE c FROM city AS c WHERE c.Population IS NULL

然后运行你的INSERT.

但是,如果您尝试使用字段为的UPDATE现有记录,则需要编写完全不同的语句。cityPopulationNULL

您的数据集需要包含一个键,有点像更新 Python 字典。

dataset = 
[(1958000,<key_value>),
(261250,<key_value>),
(205480,<key_value>),
(140580,<key_value>),
(804320,<key_value>),
(652653,<key_value>),
(484990,<key_value>),]

使用这些元组,您将需要创建一个更新语句。其工作原理取决于您使用的 Python 库。但类似这样的事情:

WITH ds = dataset: 
    statement = UPDATE c SET c.Population = ds.<population_value> WHERE c.<key_column> = ds.<key_value>
    mysql.update(statment,ds)


推荐阅读