2017-06-06 57 views
0

我正在運行pandas read_sql_query和cx_Oracle 6.0b2以從Oracle數據庫中檢索數據我繼承了DataFrame。pandas read_sql_query爲包含正值的Oracle數據庫編號字段返回負值和不正確的值

許多Oracle表中的一個字段的數據類型爲NUMBER(15, 0),帶有無符號值。當我從該字段檢索數據時,DataFrame將數據報告爲int64,但DataFrame值爲9或更少的數字,均爲負號。所有的值已經改變 - 我假設整數溢出發生在某處。

如果我在SQL查詢中使用to_char轉換數據庫值,然後在DataFrame上使用pandas to_numeric,那麼這些值的類型爲int64且正確。

我使用Python 3.6.1 x64和pandas 0.20.1。 _USE_BOTTLENECKFalse

如何從表中檢索正確的值而不使用to_char

回答

1

刪除大熊貓,只是使用cx_Oracle仍然導致整數溢出所以在SQL查詢中我使用:
CAST(field AS NUMBER(19))

此時此刻我只能猜測,NUMBER(11)NUMBER(18)之間的任何領域都需要明確的CASTNUMBER(19)來避免溢出。

相關問題