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

发布于 2025-01-04 05:18:45 字数 423 浏览 0 评论 0原文

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 属性应用于获取列名称。

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}

How could I preserve column ordering without parsing executed SQL first? It works well with normal cursor when list is returned, but I need access to dictionary keys and therefore need to use RealDictCursor.

EDIT: Well, I actually can't. description attribute of the cursor object should be used for getting column names.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

锦上情书 2025-01-11 05:18:45

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

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

You can use psycopg2.extras.NamedTupleCursor and then use namedtuple_obj._asdict() to convert that to an OrderedDict.

Note: In ordered to get this functionality "out of the box" we need to have Python version >= 2.7.

烟柳画桥 2025-01-11 05:18:45

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

在 python shell 中尝试“print dict_cur.description”,看看会得到什么。

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

I don't have this "extras" package, but normally a cursor should have a property called description which is a tuple containing all the columns in order along with some additional information like field type etc.

Try out "print dict_cur.description" in a python shell and see what you get.

EDIT: never mind. I did not read your "EDIT"...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文