基于几个Api调用,我构建了以下数据结构(Dictionary)。我使用python字典作为控股地点。
325167 A,
953929 B, A, C
824420 D, B,
796992 K, M, Z,
825116 J, F, E,
我获取每个值,然后向数据库发送一个查询,并从some_table中选择一些结果集,其中some_table.someCol ='A'。然后我试图将这些数据保存在另一个字典中,以便将来使用它。
这是我目前正在尝试处理的错误,cl_to是聚焦的查询的列名。
Traceback (most recent call last):
File "Category.py", line 148, in <module>
categoryResults.append(categoryRow['cl_to']);
TypeError: 'NoneType' object is not subscriptable
{'cl_to': 'EP-plater_etter_\xc3\xa5r'}
{'cl_to': 'Musikk_i_2002'}
None
这就是我的代码的样子:
#Dictionary to save initial category with the rest of cl_to
baseCategoryTree = {}
categoryResults = []
# query get all the categories a category is linked to
categoryQuery = "select cl_to from sometable cl left join anotherTable p on cl.cl_from = p.another_column where p.some_column=14 and p.another_column ='";
cursor = db.cursor(cursors.SSDictCursor);
for key, value in idTitleDictionary.iteritems():
for startCategory in value[0]:
#print startCategory + "End of Query";
try:
baseCategoryTree[startCategory] = [];
#print categoryQuery + startCategory;
cursor.execute(categoryQuery + startCategory + "'");
done = False;
while not done:
categoryRow = cursor.fetchone();
print categoryRow;
if not categoryRow:
done = True;
continue;
categoryResults.append(categoryRow['cl_to']);
baseCategoryTree[startCategory].append(categoryResults);
except Exception, e:
traceback.print_exc();
最佳; N-H
答案 0 :(得分:1)
...
while not done:
categoryRow = cursor.fetchone();
print categoryRow;
if not categoryRow:
done = True;
continue;
categoryResults.append(categoryRow['cl_to']);
...
continue
将换行到while
上方categoryRow
,此时 categoryRow['cl_to']
将为无。
然后:
while not done:
categoryRow = cursor.fetchone();
print categoryRow;
if not categoryRow:
done = True;
continue;
categoryResults.append(categoryRow['cl_to']);
遭遇......热潮。
如果要捕获所有行,可能需要以下内容:
...
{{1}}
...
答案 1 :(得分:1)
我认为你在categoryResults.append(categoryRow['cl_to'])
循环中意味着while
。现在,您只是循环,直到categoryRow
为None
,然后尝试追加并获得明显的错误。
顺便说一下,摆脱行尾的所有;
。这是Python,而不是C / C ++。只有在一行中需要两个语句时才需要;
,例如:
do_some_thing(); do_some_other_thing()
但这对可读性来说通常是一件坏事。改为使用单独的行。
do_some_thing()
do_some_other_thing()