0

所以我设置了一个 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 的整数值

4

2 回答 2

7

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

于 2012-07-12T03:17:10.900 回答
5
  1. 永远不要使用except: pass,它会隐藏信息。

  2. 它当前隐藏的信息可能是此代码的失败:

     c.execute("""SELECT words from searchterms where onstate = 1 AND progid = %d;""") % searchnumber
    
于 2012-07-12T03:14:21.277 回答