问题:将经过处理后的结果数据存入到mysql库中,表已生成或未生成;
解决方法:
1. 将整个表直接保存,这种方式更快些。
from sqlalchemy import create_engine
# 将数据写入mysql库中
engine = create_engine('mysql+pymysql://user:password@127.0.0.1:3306/mysql')
pd.io.sql.to_sql(my_dataframe,'mysql_table', engine, schema='databases', if_exists='append',index=None)
注最之前用的如下语句,会报错,表已存在,首次建立并一次性导入数据的话,可以用如下命令:
engine = create_engine('mysql+pymysql://user:password@127.0.0.1:3306/mysql')
my_dataframe.to_sql('mysql_table', engine, chunksize=100000, index=None)
2. 直接读df的数据,然后一行行写入
import pymysql
# 数据库连接信息
conn = pymysql.connect(
host='127.0.0.1',
user='root',
passwd='root',
db='mysql',
port = 3306,
charset="utf8")
# 分块处理
big_size = 100000
# 分块遍历写入到 mysql
with pd.read_csv('./data.csv',chunksize=big_size) as reader:
for df in reader:
datas = []
print('处理:',len(df))
# print(df)
for i ,j in df.iterrows():
data = (j['id'],j['lon'],j['lat'])
datas.append(data)
_values = ",".join(['%s', ] * 5)
sql = """insert into users(id,lon, lat) values(%s)""" % _values
cursor = conn.cursor()
cursor.executemany(sql,datas)
conn.commit()
# 关闭服务
conn.close()
cursor.close()
print('存入成功!')
网友评论