соединитель python mysql добавляет ненужное значение точности в ячейку типа данных с плавающей запятой, имеющую целочисленное значение

#python #mysql #mysql-connector #mysql-connector-python

#python #mysql #mysql-connector #mysql-connector-python

Вопрос:

У меня есть таблица, в которой есть столбец «column_float», который имеет тип данных float, но значение, вставленное для этого столбца, является целочисленным значением 5

Когда я считываю это значение через python mysql connector, оно дает мне значение с плавающей запятой 5.0

Мое требование заключается в том, что если в столбце с плавающей запятой имеется целочисленное значение, оно должно считываться только как целое число без добавления какой-либо дополнительной точности.

Любая помощь здесь? Любые настройки для python mysql connector для этого.

Ответ №1:

У плавающей запятой всегда есть десятичные дроби, но вы можете проверить, есть ли у нее какие-либо, а затем округлять только тогда, когда есть только ноль.

Замените @a именем вашего столбца

 SET @a = 5.0;
SELECT IF( ROUND(@a,0) = @a,ROUND(@a,0),@a)
  

Результат

 # IF( ROUND(@a,0) = @a,ROUND(@a,0),@a)
5
  

И формирует любое другое подобное

 SET @a = 5.1;
SELECT IF( ROUND(@a,0) = @a,ROUND(@a,0),@a)
  

Результат

 # IF( ROUND(@a,0) = @a,ROUND(@a,0),@a)
5.1
  

Для python есть те же функции

 round(5.0)
# Returns: 5
  

Комментарии:

1. Спасибо @nbk , но моя проблема больше связана с mysql connector, в моем коде я извлекаю данные через select * from table , поэтому я хочу знать, есть ли что-нибудь в глобальной настройке mysql-connector, чтобы оно само по себе не добавляло дополнительной точности.

2. Если у вас смешанный столбец с плавающей запятой и целым числом, и вы не хотите использовать python для округления ваших значений. Кроме того, SELECT * — это очень плохое программирование, потому что вы всегда должны минимизировать объем данных и выбирать только те столбцы, которые вам нужны. Так что используйте mysql или python на ваш выбор