Подтвердить что ты не робот

Результаты pymysql fetchall() в качестве словаря?

Есть ли способ получить результаты из fetchall() в качестве словаря, используя pymysql?

4b9b3361

Ответ 2

Используйте pymysql.cursors.DictCursor, который вернет строки, представленные как словари, сопоставляющие имена столбцов со значениями.

Несколько способов использовать его...

Создайте объект соединения и создайте из него все курсоры be 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 из обычного объекта соединения:

>>> connection = pymysql.connect(db='foo')
>>> with connection.cursor(pymysql.cursors.DictCursor) as cursor:
...     print cursor
... 
<pymysql.cursors.DictCursor object at 0x7f876830c050>

Подключите и создайте DictCursor в одной строке с помощью with:

>>> from pymysql.cursors import DictCursor
>>> with pymysql.connect(db='foo', cursorclass=DictCursor) as cursor:
...     print cursor
... 
<pymysql.cursors.DictCursor object at 0x7f8767769490>

Ответ 3

Используйте метод DictCursor в методе cursor().

Ответ 4

Если вы имеете в виду, что хотите получить два столбца и вернуть их в качестве словаря, вы можете использовать этот метод.

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