python将None值写入数据库
我需要从excel中读取数据然后写入到mysql中,其中有一个字段的字段类型在数据库中是int型,但是用pandas读取excel后里面有空值和非数字类型的内容。所以就遇到了这么几个问题。
- pandas会默认将excel中的空值读取为Nan,读取成Nan后没办法写入mysql数据库中。
解决方案:可以pandas读取excel的时候设置参数 keep_default_na = False, 这样pandas就不会把空值读取为nan类型。
df = pd.read_excel(file, keep_default_na = False)
2. 将空值或非数字类型字符转换成None
解决方案:直接replace替换成None就行。
3. None类型不能写入msql中
我之前的sql是这么写的,这样写None无法转换成NULL
sql = """INSERT INTO 表名 (`字段1`, `字段2`, `字段3`, `字段4`, `字段5`) VALUES ("{0}","{1}","{2}", "{3}", "{4}")""".format(data[0], data[1],data[2],data[3],data[4])
所以我需要改一下
sql = """INSERT INTO 表名 (`字段1`, `字段2`, `字段3`, `字段4`, `字段5`) VALUES (%s, %s, %s,%s,%s)"""
这样就None类型的值写入mysql中就可以变成NULL了。
发布于 2022-03-11 23:24