PyMySQL 和 OrderedDict

PyMySQL and OrderedDict

我已经使用 PyMySQL 一段时间了,并创建了我自己的包装器,我习惯于 shorthand 编写查询。尽管如此,我一直在使用 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)

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

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

class OrderedDictCursor(DictCursorMixin, Cursor):
    dict_type = OrderedDict

然后就可以使用新的游标了class如下图

cursor = conn.cursor(OrderedDictCursor)