Для созданной мной таблицы Oracle, MYTABLE, у меня есть столбец COL1, который объявлен как NUMBER(20,3); он может иметь 3 значащих цифры после запятой. Когда я запускаю курсор cx_Oracle в этой таблице:
cursor.execute('SELECT COL1 FROM MYTABLE')
cursor.description
>> [('COL1', <type 'cx_Oracle.NUMBER'>, 25, 22, 20, 3, 1)]
cursor.execute('SELECT SUM(COL1) FROM MYTABLE')
cursor.description
>> [('SUM(COL1)', <type 'cx_Oracle.NUMBER'>, 127, 22, 0, 0, 1)]
Во втором случае я потерял точность и масштаб. Сами данные в порядке (и отображают значения с десятичными разрядами).
Мне нужен надежный способ сказать в обоих случаях, какие типы данных ожидать (чтобы я мог решить, как форматировать мои данные в пользовательском интерфейсе клиента и т. д.). Глядя на описание курсора, вы могли бы подумать, что нет значащих цифр после десятичной точки разрешены во втором случае, и моя нижестоящая логика пользовательского интерфейса отображает числа как целые числа, что нежелательно.
Является ли это ошибкой, и если да, то есть ли способ однозначно выяснить по курсору во втором случае, какие данные я мог ожидать?