从PostgreSQL获取数据作为字典

时间:2014-01-30 19:45:26

标签: python sql postgresql

我有一个包含多个字段的数据库表,我正在查询并提取满足某些参数的所有数据。我使用psycopg2 for python,语法如下:

cur.execute("SELECT * FROM failed_inserts where insertid='%s' AND site_failure=True"%import_id)
                failed_sites= cur.fetchall()

这将返回正确的值作为列表,并保持数据的完整性和顺序。但是我想查询在我的应用程序中的其他地方返回的列表,我只有这个值列表,即它不是字段作为这些值的键的字典。而不是必须做

desiredValue = failed_sites[13] //where 13 is an arbitrary number of the index for desiredValue

我希望能够通过字段名称进行查询,如:

desiredValue = failed_sites[fieldName] //where fieldName is the name of the field I am looking for

有一种简单的方法和有效的方法吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

cursor.description将为您提供列信息(http://www.python.org/dev/peps/pep-0249/#cursor-objects)。您可以从中获取列名并使用它们来创建字典。

cursor.execute('SELECT ...')
columns = []
for column in cursor.description:
    columns.append(column[0].lower())
failed_sites = {}
for row in cursor:
    for i in range(len(row)):
        failed_sites[columns[i]] = row[i]
        if isinstance(row[i], basestring):
             failed_sites[columns[i]] = row[i].strip()

答案 1 :(得分:1)

psycopg2.extras,{{1}}的一部分,似乎正在寻找。