Oluderi
Oluderi

Reputation: 323

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

I am using Python 2.7 and MySQLdb. I get this error on this code:

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

The error occurs on the line: data = data + 0.5.

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

The number is a DECIMAL(8,1). I have seen other questions with this error but not for adding. Plus, I think some people will have the same problem if they are new to Python and can't understand more advanced Python coding for similar problem questions. Could you please help me? Thanks in advance.

Upvotes: 6

Views: 17482

Answers (2)

EdChum
EdChum

Reputation: 394031

There doesn't appear to be support for that operation, you will have to construct a Decimal object first and add this:

In [132]:

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

Upvotes: 7

RazerM
RazerM

Reputation: 5482

This is indeed an exception for addition:

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'

You may want to do this instead:

data = data + Decimal('0.5')

Upvotes: 2

Related Questions