如何在python中使用mysql的null和default关键字进行insert查询?

kqhtkvqz  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(344)

我正试图通过python程序运行一个insert查询,查询数千条具有可为空字段的记录。我的要求是将结果集转换为字典中的键值对,然后将这些值解析为一个列表以执行insert查询。但是,当我尝试向int类型字段添加null值并通过程序执行insert时,遇到如下错误:
警告:(1366,“不正确的整数值:第1行“category\u id”列的“null”)result=self.\u query(query)
在mysql数据库中,如果我使用'category\u id'的值的'null'或'default'关键字执行查询,则该值会按预期更新为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)
f1tvaqid

f1tvaqid1#

我认为null被转换为字符串,因此出现错误。您是否可以尝试传递值none,而不是“null”:

value = None
cursor.execute("INSERT INTO table (`column1`) VALUES (%s)", (value,))
oyxsuwqo

oyxsuwqo2#

对于需要整数的字段,mysql将null字段替换为0,0应该是默认值。
当您查询时,可以使用 IS NULL 选择空值的值,然后将该值操作为整数,例如0
或者您可以通过添加 WHERE category_id IS NOT NULL ```
SELECT *
FROM table
WHERE category_id IS NOT NULL

相关问题