2015-05-22 14 views
6

Sto usando Python 2.7 e MySQLdb. Ottengo questo errore su questo codice:TipoErrore: tipo/i di operando non supportati per +: 'decimal' e '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() 

L'errore si verifica sulla linea: data = data + 0.5.

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

Il numero è un DECIMAL(8,1). Ho visto altre domande con questo errore ma non per l'aggiunta. Inoltre, penso che alcune persone avranno lo stesso problema se sono nuove in Python e non riescono a capire una codifica Python più avanzata per problemi simili. Per favore potete aiutarmi? Grazie in anticipo.

+0

Che cos'è '' type (data [0] [0]) ''? –

risposta

6

non sembra essere il supporto per questa operazione, dovrai prima costruire un oggetto Decimal e aggiungere questo:

In [132]: 

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

Inserire le cifre decimali tra virgolette, ad esempio decimal.Decimal ('0.5'), può dare risultati più puliti. –

+0

downvoter cura di spiegare – EdChum

+0

Ugh, clic sbagliato che non ho notato fino ad ora. Non posso cambiarlo ora, purtroppo. Scusate! – jontro

1

Questa è davvero un'eccezione per l'aggiunta:

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' 

Si consiglia di fare questo, invece:

data = data + Decimal('0.5') 
Problemi correlati