PyMySQL和OrderedDict

时间:2015-11-03 16:59:29

标签: python python-2.7 pymysql

我已经使用PyMySQL了一段时间并创建了我自己的包装器,我以前用它来简写编写查询。尽管如此,我一直在使用OrderedDict创建CSV文件,因为我需要保持顺序相同但我意识到如果我使用PyMySQL来查询数据库,我将无法获得数据库回馈的顺序。如果我只想转储东西而不是手写订单,这对于检查CSV文件有点烦人。

我的问题是,如何将PyMySQL与OrderedDict一起使用?目前我的代码如下:

import pymysql
conn = pymysql.connect(host='localhost', user='root', passwd='', db='test')
cursor = conn.cursor(pymysql.cursors.DictCursor)

所以每当我查询时,我都会收到一本字典:

cursor.execute("""SELECT * FROM test""")
for row in cursor:
    pp(row)  # gives me dictionary

我想要的是,当我浏览游标时,我实际上按照它们从数据库进入的顺序检索列的OrderedDict。

类似的东西:

cursor = conn.cursor(pymysql.cursors.OrderedDict)

1 个答案:

答案 0 :(得分:15)

您可以使用cursors.DictCursorMixin并将其dict_type更改为collections.OrderedDict(默认为dict):

from collections import OrderedDict
from pymysql.cursors import DictCursorMixin, Cursor

class OrderedDictCursor(DictCursorMixin, Cursor):
    dict_type = OrderedDict

然后你可以使用新的游标类,如下所示

cursor = conn.cursor(OrderedDictCursor)