- **Python**
(*http://www.velocityreviews.com/forums/f43-python.html*)

- - **mysqldb cursor returning type along with result ?**
(*http://www.velocityreviews.com/forums/t707017-mysqldb-cursor-returning-type-along-with-result.html*)

mysqldb cursor returning type along with result ?Just taken to Python (2.5)and started to look at some DB cursor stuff
using MySQL. Anyway, after creating a query that in MySQL that has a result set of decimals I find that the cursor in python after a fetchall() returns a tuple that contains the following :: ((Decimal("101.10"),), (Decimal("99.32"),), (Decimal("97.95"),), (Decimal("98.45"),), (Decimal("97.39"),), (Decimal("97.91"),), (Decimal ("98.08"),), (Decimal("97.73"),)) as such : sum(result) fails with "TypeError: unsupported operand type(s) for +: 'int' and 'tuple'" How do I either get the resultset back as 'float' or convert the returned tuple to 'floats'.? Thanks, Newb. |

Re: mysqldb cursor returning type along with result ?> ((Decimal("101.10"),), (Decimal("99.32"),), (Decimal("97.95"),),
> (Decimal("98.45"),), (Decimal("97.39"),), (Decimal("97.91"),), (Decimal > ("98.08"),), (Decimal("97.73"),)) > > as such : > sum(result) > fails with "TypeError: unsupported operand type(s) for +: 'int' and > 'tuple'" > > How do I either get the resultset back as 'float' or convert the > returned tuple to 'floats'.? Well, what you have is a tuple-of-tuples-of-decimals, and Sum can handle Decimal types just fine. You simply have to extract the first (only) item in each row: sum(row[0] for row in result) or sum(value for (value,) in result) whichever makes more sense to you. -tkc |

Re: mysqldb cursor returning type along with result ?On 11/30/2009 12:14 AM, Paul O'Sullivan wrote:
> Just taken to Python (2.5)and started to look at some DB cursor stuff > using MySQL. Anyway, after creating a query that in MySQL that has a > result set of decimals I find that the cursor in python after a > fetchall() returns a tuple that contains the following :: > > ((Decimal("101.10"),), (Decimal("99.32"),), (Decimal("97.95"),), > (Decimal("98.45"),), (Decimal("97.39"),), (Decimal("97.91"),), (Decimal > ("98.08"),), (Decimal("97.73"),)) > > as such : > sum(result) > fails with "TypeError: unsupported operand type(s) for +: 'int' and > 'tuple'" > > How do I either get the resultset back as 'float' or convert the > returned tuple to 'floats'.? I believe it returned decimal.Decimal() objects. You can do arithmetic with decimal.Decimals, so: sum(x[0] for x in result) |

All times are GMT. The time now is 09:30 AM. |

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.

SEO by vBSEO ©2010, Crawlability, Inc.