我想从一个带有pyodbc的ODBC源获取值。 fetchall
方法返回pyodbc.Row
列表。此列表缺少条目,因此我想创建一个新列表,其中包含缺少条目的默认值。
这是一个例子:
data = cursor.execute("SELECT * FROM BuildingA").fetchall()
数据包含:
{floor: 2, company: 'foo'},
{floor: 42, company: 'bar'},
该建筑有50层,我想要一个包含50个楼层的列表,默认值为:
class emptyFloor:
company = 'none'
building = list()
for i in range(50):
building.append(emptyFloor)
for item in data:
building[item.floor] = item
不幸的是,最后一行不起作用,因为我不能用它来取回42楼的公司:
buidling[42].company
项目类型为<type 'pyodbc.Row'>
,building[42]
类型为<type 'classobj'>
。如何将item
对象保存到我的列表中?
编辑
实际上,使用数据库中的所有列填充完整列表并使用undef
或null
值会更好。我发现这个解决方案没有回答主要问题:
emptyFloor = {}
for row in cursor.columns(table=table):
emptyFloor[row.column_name] = None
building = list();
for i in range(50):
building.append(emptyFloor)
for item in data:
it = {}
for row in cursor.columns(table=table):
it[row.column_name] = item.__getattribute__(row.column_name)
building[item.Index] = it
我觉得这很难看。任何更好的建议都会受到欢迎。