在SQLite和Python中使用组合变量LIKE和%s%

在SQLite和Python中使用组合变量LIKE和%s%,python,sqlite,tkinter,Python,Sqlite,Tkinter,使用: 蟒蛇3 SQLite 特金特 我目前正在尝试创建一个函数来搜索数据库中的关键字,但当我尝试将它与TKinter结合使用时,它似乎失败了 以下是相关线路: (我尝试了很多不同的方法,下面的3行似乎与变量有关,但与TKinter的输入无关,所以我认为如果我稍微编辑一下,它们可能会起作用 我遇到的问题是,我还没有在TKinter和SQLite方面的经验,并且已经与这两个项目合作了大约3天 def searcher(column): #Getting input from user

使用:

  • 蟒蛇3

  • SQLite

  • 特金特

我目前正在尝试创建一个函数来搜索数据库中的关键字,但当我尝试将它与TKinter结合使用时,它似乎失败了

以下是相关线路: (我尝试了很多不同的方法,下面的3行似乎与变量有关,但与TKinter的输入无关,所以我认为如果我稍微编辑一下,它们可能会起作用

我遇到的问题是,我还没有在TKinter和SQLite方面的经验,并且已经与这两个项目合作了大约3天

def searcher(column):

    #Getting input from user (TKinter)
    keyword = tk.Entry(self)
    keyword.pack()

    #Assigning the input to a variable
    kword = keyword.get()

    c.execute("SELECT * FROM my_lib WHERE {kappa} LIKE {%goal%}".format(kappa=column, goal=kword))
    #c.execute("SELECT * FROM my_lib WHERE "+column+"=?", (kword,))
    #c.execute("SELECT * FROM my_lib WHERE {} LIKE '%kword%'".format(column))
我想检查是否有任何数据包含关键字,因此基本上:

k\u列数据中的单词

而不是

column\u data==k\u word

我的问题是:


是否有方法获取用户输入(通过TKinter)并在数据库(SQLite)中搜索然后检查数据库中是否有任何数据包含关键字。

SQLite文档解释说,您可以使用
作为查询字符串中的占位符,这允许您在值元组中进行替换。他们还建议不要使用带有Python字符串操作的变量组合完整查询(如下所述):

您可以在上面看到,我将
%
kword
连接在一起,这将被替换为第二个
。这也是安全的,意味着它将在需要时防止SQL注入攻击

文件:


相关帖子:

在反复尝试之后,我得到了实际的解决方案。似乎我不能像字符串一样将“%”添加到变量中,而是:

c.execute("SELECT * FROM my_lib WHERE {} LIKE '%{}%'".format(column, kword))

非常感谢!这帮了大忙。
c.execute("SELECT * FROM my_lib WHERE {} LIKE '%{}%'".format(column, kword))