Est-il possible d'obtenir les résultats d'un fetchall () sous forme de dictionnaire utilisant pymysql?
PyMySQL inclut une DictCursor
. Ça fait ce que je pense que tu veux. Voici comment l'utiliser:
import pymysql
connection = pymysql.connect(db="test")
cursor = connection.cursor(pymysql.cursors.DictCursor)
cursor.execute("SELECT ...")
https://github.com/PyMySQL/PyMySQL/blob/master/pymysql/tests/test_DictCursor.py
Utilisez pymysql.cursors.DictCursor
, qui renverra les lignes représentées par des dictionnaires mappant les noms de colonne sur des valeurs.
Quelques façons de l'utiliser ...
DictCursor
s:>>>import pymysql
>>>connection = pymysql.connect(db='foo', cursorclass=pymysql.cursors.DictCursor)
>>>with connection.cursor() as cursor:
... print cursor
...
<pymysql.cursors.DictCursor object at 0x7f87682fefd0>
>>>with connection.cursor() as cursor:
... cursor.execute("SELECT * FROM bar")
... print cursor.fetchall()
...
2
[{u'col2': 'rty', u'col1': 'qwe'}, {u'col2': 'fgh', u'col1': 'asd'}]
DictCursor
à partir d'un objet de connexion ordinaire:>>>connection = pymysql.connect(db='foo')
>>>with connection.cursor(pymysql.cursors.DictCursor) as cursor:
... print cursor
...
<pymysql.cursors.DictCursor object at 0x7f876830c050>
DictCursor
sur une seule ligne avec with
:>>>from pymysql.cursors import DictCursor
>>>with pymysql.connect(db='foo', cursorclass=DictCursor) as cursor:
... print cursor
...
<pymysql.cursors.DictCursor object at 0x7f8767769490>
Utilisez un DictCursor dans la méthode de curseur ().
Si vous voulez dire que vous voulez récupérer deux colonnes et les renvoyer sous forme de dictionnaire, vous pouvez utiliser cette méthode.
def fetch_as_dict(cursor select_query):
'''Execute a select query and return the outcome as a dict.'''
cursor.execute(select_query)
data = cursor.fetchall()
try:
result = dict(data)
except:
msg = 'SELECT query must have exactly two columns'
raise AssertionError(msg)
return result