有没有办法使用pymysql将fetchall()的结果作为字典获取?
PyMySQL包含一个DictCursor
。它可以完成你想要的功能。以下是使用它的方法:
import pymysql
import pymysql.cursors
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
使用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>
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