我正在运行pandas GLUT
和cx_Oracle 6.0b2来从我继承到DataFrame的Oracle数据库中检索数据。
许多Oracle表中的字段具有带无符号值的数据类型read_sql_query
。当我从此字段中检索数据时,DataFrame会将数据报告为NUMBER(15, 0)
,但DataFrame值的数字为9位或更少,并且都是负数。所有的值都发生了变化 - 我假设某个地方发生了整数溢出。
如果我在SQL查询中使用int64
转换数据库值,然后在DataFrame上使用pandas to_char
,则值为to_numeric
并且正确。
我正在使用Python 3.6.1 x64和pandas 0.20.1。 int64
为_USE_BOTTLENECK
。
如何在不使用False
的情况下从表中检索正确的值?
答案 0 :(得分:1)
删除pandas并且只使用cx_Oracle仍导致整数溢出,所以在我正在使用的SQL查询中:
CAST(field AS NUMBER(19))
目前我只能猜测NUMBER(11)
和NUMBER(18)
之间的任何字段都需要明确CAST
到NUMBER(19)
以避免溢出。