我正在尝试通过python程序对数千个具有可空字段的记录运行INSERT查询。我的要求是将结果集转换为字典中的键值对,然后将值解析为列表以执行INSERT查询。但是,当我尝试将NULL值添加到int类型字段并通过程序执行INSERT时,出现了如下错误:
警告:(1366,“列的整数值不正确:'NULL' 第1行的'category_id'“)结果= self._query(查询)
在MySQL数据库中,如果我使用'NULL'或'DEFAULT'关键字执行查询,以获取'category_id'的值,则该值将按预期更新为NULL。
有人可以帮忙解决我在这里遗漏的内容吗?以下是我的代码段:
for s in result:
temp_dict = {}
for key, value in enumerate(s):
if value is None:
temp_dict[key] = pymysql.NULL
else:
temp_dict[key] = str(value)
答案 0 :(得分:1)
我认为由于错误而将null转换为字符串 您可以通过传递值None而不是“ NULL”来尝试吗:
value = None
cursor.execute("INSERT INTO table (`column1`) VALUES (%s)", (value,))
答案 1 :(得分:0)
对于需要整数的字段,MySQl将NULL字段替换为默认值0。
查询时,您可以使用IS NULL
来选择具有空值的值,然后可以将其操作为整数,例如0
或者您可以通过添加
使查询返回仅返回category_id不为空的值 WHERE category_id IS NOT NULL
SELECT *
FROM table
WHERE category_id IS NOT NULL