Steven Matthews
Steven Matthews

Reputation: 11325

Replacement value not working?

So I've got a try/except block set up, which will go through a database dependent on certain conditions:

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

For some reason, it isn't iterating on progid, in fact, it isn't even getting the first value assigned to it (0). Why would this be? As far as I know, %d should be replaced by the integer value of searchnumber

Upvotes: 0

Views: 99

Answers (2)

kojiro
kojiro

Reputation: 77157

You're probably hiding a TypeError because you're trying to use the % operator on whatever object or value is equivalent to c.execute("string"). You might've caught it if you hadn't hidden all errors with the bare except. You'll note this is a specific antipattern in the official Python Dos and Don'ts page.

Upvotes: 7

Ned Batchelder
Ned Batchelder

Reputation: 375854

  1. Never use except: pass, it hides information.

  2. The information it's currently hiding is probably a failure from this code:

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

Upvotes: 5

Related Questions