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