我正在研究一個接受字串輸入的函式,然后回傳包含該字串的資料庫中列的名稱。
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]) 成功列印了表中每一列的名稱,所以我知道該函式的一部分起作用了。但是,當我使用我知道在資料庫中的搜索詞運行該函式時,每次迭代都會產生“無”作為輸出。我究竟做錯了什么?
uj5u.com熱心網友回復:
有幾個堆疊溢位問題已經解決了這個問題。請參閱此處和此處。簡而言之,列名不是安全問題,因此如果您想對它們進行動態處理,則需要對該部分使用常規的 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)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/355909.html
