簡體   English   中英

我可以使用 python 來簡化涉及所有列的 SQLite 查詢嗎?

[英]Can I use python to simplify an SQLite query involving all columns?

我正在研究一個接受字符串輸入的函數,然后返回包含該字符串的數據庫中列的名稱。

con =sqlite3.connect('library.db')
cur = con.cursor()
data=cur.execute('''SELECT * FROM table1''')
def search_word():
word = input("Input search word")
for column in data.description:
    cur.execute('''SELECT ? FROM table1 WHERE ?=?''',(str(column[0]),str(column[0]),str(word),))
    output = cur.fetchone()
    print(output)

search_word()

在上面的函數中,輸入 print(column[0]) 成功打印了表中每一列的名稱,所以我知道該函數的一部分起作用了。 但是,當我使用我知道在數據庫中的搜索詞運行該函數時,每次迭代都會產生“無”作為輸出。 我究竟做錯了什么?

有幾個堆棧溢出問題已經解決了這個問題。 請參閱此處此處 簡而言之,列名不是安全問題,因此如果您想對它們進行動態處理,則需要對該部分使用常規的 Python 字符串操作,並僅對值使用參數綁定。 像這樣的事情應該有效。

for column in data.description:
    query = f'''SELECT {column[0]} FROM table1 WHERE {column[0]} = ?'''
    cur.execute(query,(str(word),))
    output = cur.fetchone()
    print(output)

暫無
暫無

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

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