【发布时间】:2020-11-20 20:05:03
【问题描述】:
我将一个 Oracle 数据库转移到了 SQL Server,一切似乎都很顺利。各种 ID 列都是很大的数字,所以我不得不使用 Decimal,因为它们对于 BigInt 来说太大了。
我现在尝试使用 pandas.read_sql 读取数据,使用 pyodbc 连接与 ODBC Driver 17 for SQL Server。 df = pandas.read_sql("SELECT * FROM table1"),con)
这些数字以 float64 形式出现,当我尝试打印它们时,我们在 SQL 语句中使用它们,它们以科学计数法出现,当我尝试使用 '{:.0f}'.format(df.loc[i,'Id']) 时,它将几个数字变成相同的数字,例如 90300111000003078520832。就像使用科学记数法时会丢失精度一样。
我也在 read_sql 之前尝试了pd.options.display.float_format = '{:.0f}'.format,但这没有帮助。
显然我做错了什么,因为数据库中的 ID 是正确的。
感谢任何帮助谢谢
【问题讨论】:
-
尝试将
, coerce_float=False添加到您的read_sql通话中。这应该将列值作为Decimal对象返回。 -
你从哪里想出这些东西的……照常工作,谢谢你的帮助;)
-
@Pearl 在read_sql 文档中。
标签: sql-server pandas dataframe pyodbc