6
votes

curseur.fetchall () renvoie des caractères supplémentaires à l'aide de MySQLDB et Python

Lorsque j'utilise Python pour aller chercher des résultats dans une base de données SQL, je reçois des chartes supplémentaires au début et à la fin de la valeur renvoyée. Par exemple, le code ci-dessous renvoie ((56L,),) au lieu de 56, quelqu'un sait-il que l'obtention de la valeur ... et de ce que signifie ((((((((((() xxx


0 commentaires

4 Réponses :


1
votes

56L code> est un Entier long . "Les entiers longs ont une précision illimitée." Ils peuvent être utilisés comme des entiers simples.

Vous pouvez voir juste la valeur longue en faisant quelque chose comme: p> xxx pré>

Exemple Session: P>

>>> results = ((56L,),)
>>> for result in results:
...     print(result[0])
...
56


0 commentaires

9
votes

fetchall () code> retourne une liste (vraiment: un tuple) de tuples. Pensez-y comme une séquence de lignes, où chaque ligne est une séquence d'articles dans les colonnes. Si vous êtes sûr que votre recherche ne renverra qu'une ligne, utilisez Fetchone (), qui retourne un tuple, ce qui est plus simple à décompresser. Vous trouverez ci-dessous des exemples d'extraction de ce que vous voulez de Fetchall () et de Fetchone ():

# Use fetchall():
((points,),) = cursor.fetchall()  # points = 56L

# Or, if you use fetchone():
(points,) = cursor.fetchone()     # points = 56L


0 commentaires

3
votes

Essayez la méthode suivante, il vous aidera à convertir la sortie Fetchall () dans une meilleure liste:

 row = cursor.fetchall()
 print row 
 output is : [(1,), (2,), (3,), (4,)]
 num = list(sum(row, ()))
 print num
 output is : [1, 2, 3, 4]


1 commentaires

Je l'ai fait pour créer un ensemble: Fechasset = Set (Somme (lignes, ()))



3
votes

Si vous utilisez votre requête pour obtenir une seule valeur, vous pouvez simplement prendre l'index 0th. XXX PRE>

Si le résultat n'a qu'une seule valeur utilise les résultats code>. Cela devrait vous donner la valeur que vous recherchez. Parfois, nous obtenons un résultat énorme lorsque nous exécutons une requête, dans cette situation, nous devrons itérer à travers les valeurs et l'attribuer à la liste. P> xxx pré>

lorsque vous exécutez le Requête pour d'énormes articles Vous obtenez une sortie quelque chose comme ça lorsque vous utilisez curosr.fetchall () p> xxx pré>

Utilisez le code suivant pour obtenir le format de la liste des données P>

>>> results=(('58',),('50',),('10'),)
>>>[x[0] for x in results] --> code
   ['58', '50', '1']


0 commentaires