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)
我已经使用 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)