python使用pandas导入excel数据到mysql
程序员文章站
2022-06-11 10:47:20
...
需求
公司业务需要我从excel中导入数据到mysql,说到数据处理,首先肯定是想到用pandas。
过程
一看是想着直接输入sql语句,查了查资料发现pandas有to_sql()方法。
但是使用后发现除了建表和插入数据外,没任何约束。
如果自动生成表后使用index作为主键很不利于后续据需导入数据。
解决
我试着把数据插入一张一存在的表中,会报错,这说明to_sql()只会插入数据而不会修改表结构,在错误信息中,我发现to_sql()是执行insert语句把DataFrame列标签作为数据表的列名,值作为值插入到指定表中,从中我得出了解决方案,自己建一个表,自己创建一个自增id主键加上DataFrame中列标签对应的列。
结论
只要dataframe.to_sql()参数中选定的表中包含有dataframe里对应的列,表列名=dataframe列名,数据类型相同,dataframe.to_sql()就能正常导入数据,要设定各种约束,自己创建一个符合要求的表即可。
代码
import pandas as pd
import numpy as np
# %%
# df = pd.read_excel('/home/dianhui/语法/初级语法.xlsx')
# df = pd.read_excel('/home/dianhui/语法/中级语法.xlsx')
df = pd.read_excel('/home/dianhui/语法/高级语法.xlsx')
# %%
print(df)
# %%
df0 = df.iloc[:,0:3]
# %%
print(df0)
# %%
df1 = df0.dropna(how = 'all')
# %%
df1
# %%
from sqlalchemy import create_engine
# %%
mysql_engine = create_engine(f"mysql+pymysql://root:[email protected]:3306/grammar")
# %%
import sqlalchemy
df2 = df1.reset_index(drop=True)
df2.to_sql(name='high',con=mysql_engine.connect(),if_exists="append",index=False)
# CREATE TABLE middle (id INT NOT NULL AUTO_INCREMENT,PRIMARY KEY(id),UnitNum CHAR(100),Name CHAR(100),_explain CHAR(255));
上一篇: mysql8数据库优化
推荐阅读
-
使用python的pandas库读取csv文件保存至mysql数据库
-
Python使用xlrd模块操作Excel数据导入的方法
-
Python导入txt数据到mysql的方法
-
Python中LOADDATAINFILE语句导入数据到MySQL遇到问题的解决方案分享
-
使用NPOI将Excel表导入到数据库中
-
Python开发使用Pandas包进行Excel表格数据操作
-
php中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
-
php导入excel文件到mysql数据库的方法
-
java 使用poi 导入Excel数据到数据库的步骤
-
PHP Excel导入数据到MySQL数据库