Sustitución de parámetros de Python SQLite con comodines en LIKE

Estoy intentando usar una consulta LIKE parametrizada con la biblioteca Sqlite de Python como se muestra a continuación:

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

pero el ? Dentro del comodín no se está evaluando, dejándome con este error:

 "sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 2 supplied." 

También intenté usar la versión etiquetada de la consulta con:

like '%:searchstr%' y en la lista que tiene {"searchstr":searchstr...

pero cuando hago eso, la consulta se ejecuta pero nunca devuelve ningún resultado, incluso si se pone manualmente "like '%a%'"... devuelve cientos de resultados como debería

¿Alguna sugerencia por favor?

Las cotizaciones protegen bien ? o :name de ser tomado como un marcador de posición – se toman literalmente. Debe colocar los signos de porcentaje alrededor de la cadena que está pasando y usar el marcador de posición sin comillas. Es decir:

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

Tenga en cuenta que tampoco ? está entre comillas, y eso es exactamente lo que debería ser para que se los tome como marcadores de posición.