猿问

在 SQLite 中,如何使用输入框中的文本搜索数据库,并将结果显示为文本?

我的搜索页面上有一个输入框。我希望此函数在我的数据库中的表(电影)中搜索输入到该条目框中的任何文本(列名称为“标题”),然后显示结果。


def search_now():

    conn = sqlite3.connect('movie_catalog.db')

    c = conn.cursor()


    searched = search_box.get()

    sql = "SELECT * FROM movies WHERE title = %s"

    name = (searched, )

    result = c.execute(sql, name)


    if not result:

        result = "Movie not found"



    # Commit our changes

    conn.commit()


    # Close database connection

    conn.close()

我不断收到以下错误消息:


sqlite3.OperationalError: near "%": syntax error

我一直在使用的教程是使用 MYSql,所以我不确定“%s”占位符是否适用。有任何想法吗?


吃鸡游戏
浏览 131回答 1
1回答

牧羊人nacy

你应该这样做(不安全)searched = search_box.get()sql = "SELECT * FROM movies WHERE title = '%s'" % searchedresult = c.execute(sql)或这个(相当安全地防止注射)searched = search_box.get()t = (searched,)sql = "SELECT * FROM movies WHERE title=?"result = c.execute(sql, t)编辑:在您的示例中,您将文字字符串传递SELECT * FROM movies WHERE title = '%s'"给数据库,这就是它抱怨的原因%s
随时随地看视频慕课网APP

相关分类

Python
我要回答