pd.tosql不能将csv文件导入mysql?

版权声明:非诚勿扰 https://blog.csdn.net/kaikai0803/article/details/84887588

pd.to_sql仅支持sqlite3与sqlalchemy,所以pymysql直接建立的数据库连接对象无法作为to_sql的连接参数

改动如下:

利用sqlalchemy建立数据库连接
导入方法换成pd.io.to_sql()

将csv文件导入mysql实例:

# 导包
import pymysql	# mysql驱动
import pandas as pd
from sqlalchemy import create_engine	# pandas支持的驱动方式

# 读取csv文件内容
notes = pd.read_csv('/Users/wjl/Desktop/xc_notes.csv',encoding='utf8')

# create_engine 创建数据库连接conn
conn = create_engine('mysql+pymysql://root:278***972@localhost:3306/qn_yj?charset=utf8')

# 导入	pd.io.to_sql( DataFrame, table_name, con=db_connect, if_exists='append/fail/replace', index=False)
pd.io.sql.to_sql(notes,'lvyou_note',con=conn,if_exists='append',index=False)

踩坑:

1 提前建好数据库和表

并不是必要,to_sql 会自动生成,但推荐建好,可控性

2 在csv文件首行,添加与表字段相同的内容,一一对应
3 网上很多代码在建立数据库连接的时候,驱动写的是mysqldb,本机不可用,换pymysql正常
4 if_exists参数为append
5 index参数为False,源码默认为True,sql语句会在表中加一列,然而列名都已指定,所以会报错,换False正常

猜你喜欢

转载自blog.csdn.net/kaikai0803/article/details/84887588