簡體   English   中英

在 SQLite 中,如何使用輸入框中的文本搜索我的數據庫,並將結果顯示為文本?

[英]In SQLite, how do I search my database with text from an entry box, and display the result as text?

我的搜索頁面上有一個輸入框。 我希望此函數在我的數據庫中的表(電影)中搜索輸入到該輸入框中的任何文本(列名是“標題”),然后顯示結果。

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”占位符是否適用。 有任何想法嗎?

你應該這樣做(不安全)

searched = search_box.get()
sql = "SELECT * FROM movies WHERE title = '%s'" % searched
result = 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM