我将 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。当使用科学记数法时,就像失去了精度一样。
我也尝试过pd.options.display.float_format = '{:.0f}'.format
在 read_sql 之前但这没有帮助。
显然我一定做错了什么,因为数据库中的 ID 是正确的。
任何帮助表示赞赏谢谢
pandas' read_sql https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_sql.html方法有一个名为coerce_float
默认为True
它……
尝试将非字符串、非数字对象(如decimal.Decimal)的值转换为浮点型,这对于 SQL 结果集很有用。
但是,就你而言,它是not有用,所以只需指定coerce_float=False
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)