Python read_sql函数使用的注意事项

  • Post author:
  • Post category:python


【参数介绍】


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位的数字变成了科学计数法并丢失了精度。



版权声明:本文为miemiede原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。