更换价值不起作用?

时间:2012-07-12 03:08:18

标签: python string itertools

所以我有一个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的整数值替换

2 个答案:

答案 0 :(得分:7)

您可能隐藏了TypeError,因为您尝试在%运算符上使用任何对象或值等同于c.execute("string")。如果你没有隐藏所有错误,你可能已经抓住了它。您会注意到这是official Python Dos and Don'ts page中的特定反模式。

答案 1 :(得分:5)

  1. 永远不要使用except: pass,它会隐藏信息。

  2. 目前隐藏的信息可能是此代码失败的原因:

     c.execute("""SELECT words from searchterms where onstate = 1 AND progid = %d;""") % searchnumber