I am executing a mysql query in python using the MySQLdb package. The code looks something like this:
c=db.cursor()
c.execute("""select * from table""")
output = []
for row in c:
output.append(row[4])
where row[4]
contains a decimal value that I want to store in the output
list.
The problem is every value that I am getting looks like this: Decimal('XX.XX')
where all I want in the output
list is XX.XX. At the end of the script, my output
list looks like this:
[Decimal('10.02'), Decimal('20.24'), ...]
But I need it to just contain the numbers, like this:
[10.02, 20.24, ...]
How do I do that?
Thanks!
You can either convert a Decimal object to a string:
cursor = db.cursor()
cursor.execute("""select * from table""")
output = []
for row in cursor:
output.append(str(row[4]))
Or to a float:
cursor = db.cursor()
cursor.execute("""select * from table""")
output = []
for row in cursor:
output.append(float(row[4]))
Converting it to a float will cause it to lose its full precision, so a value like 20.24 will become 20.239999999999998.
Also, casting it to a float will raise an Exception if the value is None
. To avoid that, you can use a helper function like this:
def convert_mysql_decimal_to_float(decimal_object):
if (decimal_object == None):
return None
else:
return float(decimal_object)
cell_value = convert_mysql_decimal_to_float(row[4])