我使用pyodbc查詢從SQL Server數據,然後在pandas
就可以進行操作。我注意到一些計算的數字列以decimal.Decimal形式返回,其他以float形式返回。這是有問題的,因爲算術操作數不能對兩種不同類型的結果執行。Pyodbc默認類型數字
什麼是解決這個問題的最好方法?是否有pydobc設置強制decimal.Decimal浮動?我應該自己做轉換嗎?還有別的嗎?
我使用pyodbc查詢從SQL Server數據,然後在pandas
就可以進行操作。我注意到一些計算的數字列以decimal.Decimal形式返回,其他以float形式返回。這是有問題的,因爲算術操作數不能對兩種不同類型的結果執行。Pyodbc默認類型數字
什麼是解決這個問題的最好方法?是否有pydobc設置強制decimal.Decimal浮動?我應該自己做轉換嗎?還有別的嗎?
Here是細節ODBC和Python數據類型之間的轉換轉換表(下Results
爲Python 2.x和3.x標題)。
無論CAST
在@亞倫的答覆中提到,或更改數據庫中的源數據類型的結果。
對於一些更詳細(具體列數據類型,樣本數據的數據庫更改的靈活性),我們可以幫助決定哪些選項是最好的。
如果你寫的查詢我建議只使用CAST
來控制數據類型。我總是明確地轉換計算列在SQL Server
SELECT CAST(ColumnA/ColumnB AS FLOAT) AS 'FieldA' FROM Table
我考慮這樣做,但SQL查詢是醜陋的,因爲他們已經無需再添加代碼適應客戶端庫。應該真的有解決方案,您執行一次客戶端上的每個查詢,也許包裝execute()爲您做到這一點。 – Roger
數據庫模式有點混亂,小數,數字和浮點數全部交替使用,沒有太多可以解釋的押韻。我結束了將十進制數字浮在python一側。對我來說,長期的解決方案是修改我在pyodbc和business之間的中間庫,以便有一個強制小數和數字浮動的選項(也可能是其他類型)。 – Roger