2010-04-27 33 views
3

J'ai cherché haut et bas pour une réponse à pourquoi les résultats de la requête retournés dans ce format et comment convertir en une liste.Pourquoi le résultat du jeu d'enregistrements est-il renvoyé de cette manière pour la requête de base de données Python?

data = cursor.fetchall()

Lorsque j'imprime des données, il en résulte: (('voiture',), ('bateau',), ('avion',), ('camion »,))

Je veux avoir les résultats dans une liste comme [ « voiture », « bateau », « avion », « camion »]

Répondre

5

il est de retour de cette façon parce qu'un Le jeu d'enregistrements comprend de nombreuses lignes de données, pas une liste d'éléments individuels.

Vous pouvez aplatir si vous voulez l'aide d'une compréhension de la liste:

data = [row[0] for row in cursor.fetchall()] 
+0

Génial ... merci! – Scott

0
x = (('car',), ('boat',), ('plane',), ('truck',)) 

y = [z[0] for z in x] # ['car', 'boat', 'plane', 'truck'] 
1

Le résultat pour les retours fetchall() un tableau de lignes, où chaque ligne est un tableau avec une valeur par colonne.

Même si vous ne sélectionnez qu'une seule colonne, vous obtenez toujours un tableau de tableaux, mais une seule valeur pour chaque ligne.