我有一张大约有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)
答案 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"] # ,...