我正在使用 pyodbc 从 SQL Server 查询数据,然后在pandas
. 我注意到的是,一些计算出来的数字列以十进制返回。十进制,而另一些则以浮点数形式返回。这是有问题的,因为算术操作数不能对两种不同类型的结果执行。
解决它的最佳方法是什么?是否有 pydobc 设置强制十进制。十进制浮动?我应该自己进行转换吗?还有什么?
我正在使用 pyodbc 从 SQL Server 查询数据,然后在pandas
. 我注意到的是,一些计算出来的数字列以十进制返回。十进制,而另一些则以浮点数形式返回。这是有问题的,因为算术操作数不能对两种不同类型的结果执行。
解决它的最佳方法是什么?是否有 pydobc 设置强制十进制。十进制浮动?我应该自己进行转换吗?还有什么?
下面是转换表(在Results
Python 2.x 和 3.x 的标题下)详细说明了 ODBC 和 Python 数据类型之间的转换。
@AaronCAST
的答案中提到的结果,或者更改数据库中的源数据类型。
有了更多细节(特定列数据类型、示例数据、数据库更改的灵活性),我们可以帮助确定哪个选项是最好的。
如果您编写了查询,我建议您只使用CAST
它来控制数据类型。我总是在 SQL Server 中显式转换计算列
SELECT CAST(ColumnA/ColumnB AS FLOAT) AS 'FieldA' FROM Table