从SELECT中简要地检索许多变量

时间:2012-02-20 23:49:36

标签: python mysql sql

我有一张大约有50列的表格。要从我正在执行的表中检索变量:

cursor.execute("SELECT * FROM title WHERE vendor_id = '%s'"%vendor_id)
data=cursor.fetchone()
provider, language, type, subtype, vendor_id = data[0], data[1], data[2], data[3], data[4]
etc...

有没有办法更简洁地做到这一点:我想要定义的变量也是列的名称。也许像(伪代码) -

values=cursor.fetchone; columns=cursor.fetchcolumns()
data = zip(columns, values)

2 个答案:

答案 0 :(得分:1)

select *在这里将特别具有挑战性,因为您不知道以哪种顺序返回哪些列。根据您正在使用的数据库和您正在使用的包装器,您应该能够以行的形式检索行,这样您就可以将行作为dict键引用到行中。

例如,MySQLdb通过DictCursor支持此功能。见http://www.kitebird.com/articles/pydbapi.html

对于其他图书馆,他们应该提供类似的功能。

答案 1 :(得分:0)

您可以使用cursor.description,然后将结果转换为dict:

import sqlite3

cnx = sqlite3.connect(r"g:\Python\Test\dabo\turnos\turnos.sqlite")
cur = cnx.execute("select * from Paciente")
rec = cur.fetchone()
fields = [i[0] for i in cur.description]
values = dict(zip(fields, rec))
print values["PacID"], values["PacNombre"]  # ,...