Récupérer les données avec pymysql (DictCursor)
Il semble vraiment comme un tâche simple, mais je vais avoir des difficultés à le faire bon.
Ma Requête SQL ressembler à ceci:
self.link = self.db.cursor(pymysql.cursors.DictCursor);
self.link.execute("SELECT * FROM crawler_data WHERE id=%d" % id_crawl)
Et je veux accéder à l'colonnes par ce qui suit:
row = self.link.fetchall()
if row["address"]:
self.address = self.filterAddress(row["address"])
Je reçois le message d'erreur "list indices must be integers, not str"
.
Lorsque j'imprime le row
- je obtenir la structure suivante retourné:
{u'address': 'Address Value', u'domain': 'Domain Value'}
Comment puis-je accéder à l ' "adresse" de la chaîne?
OriginalL'auteur Marcus Lind | 2014-04-18
Vous devez vous connecter pour publier un commentaire.
Dans le cas ci-dessus j'ai essayé de sélectionner seulement 1 résultat (
WHERE id=:%d
), et de vérifier ensuite si elle avaitaddress
ensemble. Pour ce faire, il n'est pas une bonne idée d'utiliserself.link.fetchall()
parce que renvoie une liste de tous les résultats qui peuvent être utilisées dans une boucle par exemple.La bonne fonction à utiliser est
self.link.fetchone()
qui ne retourne que le dictionnaire. Si vous utilisez:alors vous pouvez aussi utiliser
Si vous utilisez
alors vous devez utiliser
OriginalL'auteur Marcus Lind
Les résultats de la fetchall() sera une liste de dictionairies. Dans votre exemple, accéder à la chaîne par
OriginalL'auteur Tim Steinkuhler