如何在MySQL中使用MySQL的NULL和DEFAULT关键字进行INSERT查询?

时间:2018-09-24 12:11:14

标签: python mysql pymysql

我正在尝试通过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)

2 个答案:

答案 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