2015-05-22 11 views
6

Ich verwende Python 2.7 und MySQLdb. Ich erhalte diese Fehler auf diesem Code:TypeError: nicht unterstützte Operandentypen für +: 'dezimal' und 'float'

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

Der Fehler tritt auf der Leitung: data = data + 0.5.

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

Die Zahl ist ein DECIMAL(8,1). Ich habe andere Fragen mit diesem Fehler, aber nicht zum Hinzufügen gesehen. Außerdem denke ich, dass einige Leute das gleiche Problem haben werden, wenn sie Python neu sind und fortgeschrittene Python-Programmierung für ähnliche Problemfragen nicht verstehen. Kannst du mir bitte Helfen? Danke im Voraus.

+0

Was ist '' Typ (Daten [0] [0]) ''? –

Antwort

6

Es scheint keine Unterstützung zu sein für Bei dieser Operation müssen Sie zuerst ein Decimal Objekt erstellen und folgendes hinzufügen:

In [132]: 

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

Das Setzen der Dezimalziffern in Anführungszeichen, d. H. Decimal.Decimal ('0.5'), kann oft zu saubereren Ergebnissen führen. –

+0

Downvoter Pflege zu erklären – EdChum

+0

Ugh, falsch klicken, dass ich bis jetzt nicht bemerkt habe. Kann es jetzt leider nicht ändern. Es tut uns leid! – jontro

1

Dies ist in der Tat eine Ausnahme für die Zugabe:

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' 

Vielleicht möchten Sie diese stattdessen tun:

data = data + Decimal('0.5')