Python SQLite parameter substitution with wildcards in LIKE Python SQLite parameter substitution with wildcards in LIKE sqlite sqlite

Python SQLite parameter substitution with wildcards in LIKE


The quotes protect either ? or :name from being taken as a place-holder -- they're taken literally. You need to place the percent signs around the string you're passing, and use the plain placeholder without quotes. I.e.:

self.cursor.execute(  "select string from stringtable where string like ? and type = ?",  ('%'+searchstr+'%', type))

Note that neither ? is in quotes -- and that's exactly as it should be for them to be taken as placeholders.


Though is not an exact answer to question, and not to compete to be one, this solution however still tries to answer "parameter substitution in LIKE" as the title draws attention with this in mind too (like it did to me)


I was working in a similar manner and I combined two styles together. this way, user can enter the field name into function along with "%" being in the search parameter itself.

though field name needs sanitation, it is enough to use in small test projects. also moving "%" wildcard from query to a parameter allows user to use other wildcards.

database.py

def find_item(field,term):    cursor.execute("""        SELECT rowid,* FROM customers        WHERE (%s) LIKE ?    """%field,(term,))

app.py

import databasedatabase.find_item("first_name","%li%")database.find_item("email","_li%")