Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pyodbc数字的默认类型_Python_Sql Server_Types_Pyodbc_Pandas - Fatal编程技术网

Python Pyodbc数字的默认类型

Python Pyodbc数字的默认类型,python,sql-server,types,pyodbc,pandas,Python,Sql Server,Types,Pyodbc,Pandas,我正在使用pyodbc从SQL Server查询数据,然后在pandas中对其执行操作。我注意到,一些计算出的数字列返回为decimal.decimal,而其他列返回为float。这是有问题的,因为算术操作数不能对两种不同类型的结果执行 解决这个问题的最佳方法是什么?是否有pydobc设置强制decimal.decimal浮动?我应该自己做转换吗?还有什么吗?如果您编写了查询,我建议只使用CAST来控制数据类型。我总是在SQL Server中显式强制转换计算列 SELECT CAST(Colum

我正在使用pyodbc从SQL Server查询数据,然后在
pandas
中对其执行操作。我注意到,一些计算出的数字列返回为decimal.decimal,而其他列返回为float。这是有问题的,因为算术操作数不能对两种不同类型的结果执行


解决这个问题的最佳方法是什么?是否有pydobc设置强制decimal.decimal浮动?我应该自己做转换吗?还有什么吗?

如果您编写了查询,我建议只使用
CAST
来控制数据类型。我总是在SQL Server中显式强制转换计算列

SELECT CAST(ColumnA/ColumnB AS FLOAT) AS 'FieldA' FROM Table
是转换表(位于Python2.x和3.x的
Results
标题下),详细说明了ODBC和Python数据类型之间的转换

CAST
@Aaron的答案中提到的结果,或者更改数据库中的源数据类型


通过一些更详细的信息(特定的列数据类型、示例数据、数据库更改的灵活性),我们可以帮助决定哪个选项是最好的。

我考虑过这样做,但是sql查询很难看,因为它们已经不需要添加代码来适应客户端库了。应该有一个解决方案,您可以在客户机上对每个查询执行一次,也许包装execute()来为您执行此操作。数据库模式有点混乱,十进制、数字和浮点都可以互换使用,没有太多我可以理解的押韵。我最终将十进制转换为python端的浮点。我的长期解决方案是修改pyodbc和business之间的中间库,使其可以选择强制小数和数字浮点数(可能还有其他类型)。