sqlite3, qmarks, and NULL values

Mitchell L Model MLMLists at Comcast.net
Wed May 20 02:08:27 CEST 2009


Suppose I have a simple query in sqlite3 in a function:

    def lookupxy(x, y):
        conn.execute("SELECT * FROM table WHERE COL1 = ? AND COL2 = ?",
                     (x, y))

However, COL2 might be NULL. I can't figure out a value for y that would retrieve rows for which COL2 is NULL. It seems to me that I have to perform an awkward test to determine whether to execute a query with one question mark or two.

    def lookupxy(x, y):
        if y:
            conn.execute("SELECT * FROM table WHERE COL1 = ? AND COL2 = ?",
                         (x, y))
        else:
            conn.execute("SELECT * FROM table WHERE COL1 = ? AND COL2 IS NULL",
                         (x,))

The more question marks involved the more complicated this would get, especially if question marks in the middle of several would sometimes need to be NULL. I hope I'm missing something and that someone can tell me what it is.



More information about the Python-list mailing list