#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 на ваш выбор