更换价值不起作用?

Cec*_*uez 0 python string python-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
Run Code Online (Sandbox Code Playgroud)

由于某种原因,它不是在progid上迭代,事实上,它甚至没有为它分配第一个值(0).为什么会这样?据我所知,%d应该用searchnumber的整数值代替

koj*_*iro 7

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


Ned*_*der 5

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

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

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