在我的LIKE
中尝试使用Query
失败。
使用?
和=
可以正常工作:
def read_part_of_database(table_column, user_query):
c_lime.execute("SELECT * FROM lime_database_table"
"WHERE {} = ? ORDER BY time_start".format(table_column), [(user_query)])
for row in c_lime.fetchall():
print(row)
但是,与此相关的是,用户需要输入query
中显示的准确和完整的database
。因此,我想使用LIKE
。我已经尝试了以下方法,但是似乎都不起作用:
c_lime.execute("SELECT * FROM lime_database_table WHERE {} LIKE %s"
"ORDER BY time_start".format(table_column), ["%" + user_query + "%"])
这给了我错误:
c_lime.execute("SELECT * FROM lime_database_table WHERE {} LIKE %s ORDER BY time_start".format(table_column), ["%" + user_query + "%"])
sqlite3.OperationalError: near "%": syntax error
我尝试了一些其他的变体,取自SO
和其他来源,但似乎没有一个奏效。我在使用转义%s
时有问题吗?
user_query
在使用= ?
时是日期:2/14/2015 1:00:00 PM
,在使用LIKE
时是日期的一部分:2/14/2015
答案 0 :(得分:1)
要在带有LIKE的查询中使用%字符,请将其用单引号引起来:
c_lime.execute("""SELECT * FROM lime_database_table WHERE {} LIKE '%{}'
ORDER BY time_start""".format(table_column, user_query))