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])
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With