将对象复制到Python中的列表中

时间:2015-02-13 12:38:13

标签: python

我想从一个带有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对象保存到我的列表中?

编辑

实际上,使用数据库中的所有列填充完整列表并使用undefnull值会更好。我发现这个解决方案没有回答主要问题:

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

我觉得这很难看。任何更好的建议都会受到欢迎。

0 个答案:

没有答案