TypeError:+:'decimal'和'float'不支持的操作数类型

时间:2015-05-22 12:07:24

标签: python mysql decimal typeerror mysql-python

我正在使用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 个答案:

答案 0 :(得分:7)

似乎没有对该操作的支持,您必须首先构造一个Decimal对象并添加它:

In [132]:

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

答案 1 :(得分:2)

这确实是一个例外:

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')