TypeError: неподдерживаемый тип(ы) операнда для +: 'decimal' и 'float'

Я использую Python 2.7 и MySQLdb. Я получаю эту ошибку в этом коде:

Value = 5
x.execute("SELECT number from Testing where id ='%s';" % Value)
data = x.fetchall()
print (data)
data = data[0][0]
data = data + 0.5
x.execute(""" UPDATE Testing SET number = %s WHERE id = %s """, (data, Value))
conn.commit()

ошибка возникает в строке:data = data + 0.5.

TypeError: unsupported operand type(s) for +: 'decimal' and 'float'.

число DECIMAL(8,1). Я видел другие вопросы с этой ошибкой, но не для добавления. Кроме того, я думаю, что у некоторых людей будет такая же проблема, если они новички в Python и не могут понять более продвинутое кодирование Python для подобных проблемных вопросов. Не могли бы вы мне помочь? Спасибо заранее.

2 ответов


Кажется, что для этой операции нет поддержки, вам придется построить Decimal объект и добавить это:

In [132]:

import decimal
​
d = decimal.Decimal(23.0)
d = d + decimal.Decimal(0.5)
d
Out[132]:
Decimal('23.5')

Это действительно исключение для дополнение:

from decimal import Decimal
Decimal('0.1') + 0.2

TypeError                                 Traceback (most recent call last)
<ipython-input-3-9bb7f0cfb622> in <module>()
      1 from decimal import Decimal
----> 2 Decimal('0.1') + 0.2

TypeError: unsupported operand type(s) for +: 'decimal.Decimal' and 'float'

вы можете сделать это вместо этого:

data = data + Decimal('0.5')