views:

42

answers:

3

I have searched high and low for an answer to why query results returned in this format and how to convert to a list.

data = cursor.fetchall()

When I print data, it results in: (('car',), ('boat',), ('plane',), ('truck',))

I want to have the results in a list as ["car", "boat", "plane", "truck"]

A: 
x = (('car',), ('boat',), ('plane',), ('truck',))

y = [z[0] for z in x] # ['car', 'boat', 'plane', 'truck']
M.Shuwaiee
+5  A: 

It's returning it in that way because a recordset is comprised of many rows of data, not a list of single elements.

You can flatten it if you want using a list comprehension:

data = [row[0] for row in cursor.fetchall()]
Daniel DiPaolo
Brilliant...thank you!
Scott
+1  A: 

The result for fetchall() returns an array of rows, where each row is an array with one value per column.

Even if you are selecting only one column, you will still get an array of arrays, but only one value for each row.

Marcus Adams