Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

get raw decimal value from mysqldb query

Tags:

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!

like image 724
jeffery_the_wind Avatar asked Sep 30 '12 14:09

jeffery_the_wind


1 Answers

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]) 
like image 118
Maksym Polshcha Avatar answered Sep 21 '22 18:09

Maksym Polshcha