【参数介绍】
sql:需要执行的sql
con:连接数据库所需的engine
index_col: 选取作为index的列
coerce_float:将数字形字符串转为float,默认为True,是个坑!
parse_dates:将某列日期型字符串转换为datetime型数据
columns:选择想要保留的列
chunksize:每次输出多少行数据
【例如】
import pandas as pd
import numpy as np
import pymysql
sql=’select * from table’
conn=pymysql.connect(host=’数据库地址’,port=3306,user=”,password=”,database=”,charset=‘utf8’)
df=pd.read_sql(sql,con=conn,chunksize=1000,coerce_float=False)
【注意⚠️】
1、加入chunksize参数后,返回的df不再是dataframe类型而是一个迭代器,每个分区均为行数1000的dataframe。因此不可直接对df进行dataframe的常规函数操作。
for i in df :
print(i)
2、数据中有中文的时候数据库engine的charset参数需设置‘utf8’
3、
数据中含有decimal类型数据,若不想读取时自动转化为float,一定要带“coerce_float=False”参数,因为默认值时true。楼主在读取数据时发现所有decimal的数据全部变为float类型,整数型多了.0不说,17位的数字变成了科学计数法并丢失了精度。