欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 资讯 > ProgrammingError: nan can not be used with MySQL,怎么处理?

ProgrammingError: nan can not be used with MySQL,怎么处理?

2025/10/30 23:42:33 来源:https://blog.csdn.net/weixin_44976611/article/details/141466305  浏览:    关键词:ProgrammingError: nan can not be used with MySQL,怎么处理?

NSERT INTO 解决一切格式数据库入库问题, 但是np.NAN 不行,所以考虑可以将 np.NAN,替换成别的值,比如999,‘’, ‘nan’, ‘none’ 都可以,如果想输入到mysql仍然为 (NULL)显示,则需要先将df 转成列表,将值替换成 none。

以下为一个模拟流程:

#  创建名为 `students_table` 的表
CREATE TABLE IF NOT EXISTS students1 (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(50) NOT NULL,  # 姓名 字符串age VARCHAR(50) ,  # 年龄 字符串 , score INT  # 成绩 整型, 如果非得输入,例如 '我', 'None' ,等字符串就不能使用 to_sql 写入库,要用insert_into
);import pandas as pd
import numpy as np
import pymysql# 创建包含 NaN 值的 DataFrame
data = {'name': ['张三', '李四', '王五'],'age': ['', float('nan'), 'nan'],'score': ['', np.NAN,'nan']
}df = pd.DataFrame(data)
df# 这里直接将NAN替换成999处理
df = df.replace(np.nan,'999')conn = pymysql.connect(host="xxx.xxx.xxx.xxx", user="root", password="---------", database="testdb", charset="utf8") 
cursor = conn.cursor()keys = ','.join(df.columns.to_list())
user_data = df.apply(lambda x: tuple(x), axis=1).values.tolist()for user in user_data:print(user)query = f"INSERT INTO students1({keys}) VALUES ({('%s,' * len(keys.split(',')) )[:-1]})"cursor.execute(query, user)# 提交更改
conn.commit()

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词