所以我有一个try / except块设置,它将根据某些条件通过数据库:
try:
for searchnumber in itertools.count(0):
print searchnumber
c.execute("""SELECT words from searchterms where onstate = 1 AND progid = %d;""") % searchnumber
searchterms = (c.fetchall())
searchterms = [",".join(x) for x in searchterms]
print searchterms
except:
pass
出于某种原因,它不是在progid上迭代,事实上,它甚至没有为它分配第一个值(0)。为什么会这样?据我所知,%d应该被searchnumber的整数值替换
答案 0 :(得分:7)
您可能隐藏了TypeError
,因为您尝试在%
运算符上使用任何对象或值等同于c.execute("string")
。如果你没有隐藏所有错误,你可能已经抓住了它。您会注意到这是official Python Dos and Don'ts page中的特定反模式。
答案 1 :(得分:5)
永远不要使用except: pass
,它会隐藏信息。
目前隐藏的信息可能是此代码失败的原因:
c.execute("""SELECT words from searchterms where onstate = 1 AND progid = %d;""") % searchnumber