2017-06-06 60 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)来避免溢出。

相关问题