pymysql fetchall()将结果作为字典返回?

59

有没有办法使用pymysql将fetchall()的结果作为字典获取?


1
你的结果集是由Key和Value两列组成吗?还是你想要每一行作为一个字典,其中列名作为键? - dan04
4个回答

108

45

使用pymysql.cursors.DictCursor,返回以列名为键、对应值为值的字典表示的行。

以下是几种使用方法...

创建一个连接对象,并使其生成的所有游标都是DictCursor

>>> <i>import pymysql</i>
>>> <i>connection = pymysql.connect(db='foo', cursorclass=pymysql.cursors.DictCursor)</i>
>>> <i>with connection.cursor() as cursor:</i>
... <i>    print cursor</i>
... 
<pymysql.cursors.DictCursor object at 0x7f87682fefd0>
>>> <i>with connection.cursor() as cursor:</i>
... <i>    cursor.execute("SELECT * FROM bar")</i>
... <i>    print cursor.fetchall()</i>
... 
2
[{u'col2': 'rty', u'col1': 'qwe'}, {u'col2': 'fgh', u'col1': 'asd'}]

从普通连接对象创建DictCursor

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

使用with一行代码连接并创建DictCursor

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

3

1
如果您想获取两列数据并将它们作为字典返回,可以使用以下方法。
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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接