如何在使用psycopg2.extras.RealDictCursor时保留列顺序

时间:2012-02-10 16:27:36

标签: python psycopg2

dict_cur = conn.cursor(cursor_factory=psycopg2.extras.RealDictCursor)
dict_cur.execute("SELECT column1, column2, column3 FROM mytable")
result = dict_cur.fetchall()
print result[0]
>>> {'column2':10, 'column1':12, 'column3':42}

如果不首先解析执行的SQL,我怎么能保留列排序?返回列表时,它适用于普通光标,但我需要访问字典键,因此需要使用RealDictCursor。

编辑:嗯,我实际上不能。应使用游标对象的 description 属性来获取列名。

2 个答案:

答案 0 :(得分:3)

您可以使用psycopg2.extras.NamedTupleCursor,然后使用namedtuple_obj._asdict()将其转换为OrderedDict

注意:为了“开箱即用”获得此功能,我们需要使用Python版本> = 2.7。

答案 1 :(得分:1)

我没有这个“extras”包,但通常游标应该有一个名为description的属性,它是一个包含所有列的元组以及一些其他信息,如字段类型等

在python shell中试用“print dict_cur.description”,看看你得到了什么。

编辑:没关系。我没看过你的“编辑”......