假设我的查询如下所示:
q = SELECT * FROM MY_TABLE WHERE FIELD LIKE ?
cursor.execute(q, some_query_value)
Run Code Online (Sandbox Code Playgroud)
这似乎没有进行"包含"搜索,所以我尝试这样做
q = SELECT * FROM MY_TABLE WHERE FIELD LIKE %?%
cursor.execute(q, some_query_value)
Run Code Online (Sandbox Code Playgroud)
但是python似乎不喜欢这个.这样做的正确方法是什么?
的%通配符是内插的值的一部分; 使用字符串连接或格式将其添加到要搜索的值中,而不是在查询中:
q = "SELECT * FROM MY_TABLE WHERE FIELD LIKE ?"
cursor.execute(q, ('%' + some_query_value + '%',))
Run Code Online (Sandbox Code Playgroud)
要么
q = "SELECT * FROM MY_TABLE WHERE FIELD LIKE ?"
cursor.execute(q, ('%{}%'.format(some_query_value),))
Run Code Online (Sandbox Code Playgroud)
现在sqlite3可以正确引用值与通配符进行插值.
尝试在查询字符串周围添加引号并在查询值中放置通配符:
q = '''SELECT * FROM MY_TABLE WHERE FIELD LIKE ?'''
some_query_value = '%test%'
cursor.execute(q, [some_query_value])
Run Code Online (Sandbox Code Playgroud)