pythonpandas用sql查询数据表_python pandas read_sql_query使用记录

版本: 系统win 10 ,python 3.5, pandas:0.25.0

解决问题:

读取到的数据为 科学计数法,然后转换成整数影响精度.

pandas 使用 read_sql_query:

pandas.read_sql_query(sql, con, index_col=None, coerce_float=True, params=None, parse_dates=None, chunksize=None)[source]

场景:

读取数据库数据:

比如:

`test01`

10

32861400000003365

None

读取上述的数据使用 read_sql_query:会自动转换为 float64, 并且读出来的数据是科学计数法,然后使用 astype("int64"),或者读取值进行(int)转换,值会变化(小1),如下模拟数据

int(float(32861400000003365))

Out[8]: 32861400000003364

所以目标是不能被强制转换成 float64,在这种场景下使用 coerce_float 不管是 设置True还是False, 都不起作用,

而 read_sql_query 也没有 dtype 强制设置类型的参数,

后来查源代码;查到转换类型的方法:

文件路径; Python35\Lib\site-packages\pandas\core\internals\construction.py 位置大概在 587行左右

def convert(arr):

if dtype != object and dtype != np.object:

arr = lib.maybe_conv

你可能感兴趣的:(pythonpandas用sql查询数据表_python pandas read_sql_query使用记录)