我想从python中查询来自sqlite3
db的数据并将其填入Listbox
但是如果我正在进行搜索,我必须在记录之前提供Harvard University
之类的全名插入Listbox
。
我想通过仅提供Harvard University
来查询Harvard
之类的记录,然后它将为我输出所有records
内容Havard
的内容,因为如果我不提供全名它不会用任何记录填充listbox
。
欢迎您提出建议。
import tkinter as tk
import sqlite3
conn = sqlite3.connect("STATS.db")
cur = conn.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS institution(id INTEGER PRIMARY KEY,
name TEXT)")
conn.commit()
conn.close()
def query_record():
data1 = e1_search.get()
conn = sqlite3.connect("STATS.db")
cur = conn.cursor()
cur.execute("SELECT * FROM institution WHERE name=?", (data1,))
row = cur.fetchall()
for n in row:
List.insert(tk.END, n)
print(n)
conn.close()
root = tk.Tk()
root.geometry("300x300")
List = tk.Listbox(root, width=100)
List.pack()
e1_search = tk.StringVar()
e1 = tk.Entry(root, textvariable=e1_search)
e1.pack()
b = tk.Button(text="Search", command=query_record)
b.pack(side=tk.BOTTOM)
root.mainloop()
答案 0 :(得分:1)
我认为您可能需要修改查询。
自"SELECT * FROM institution WHERE name=?", (data1,)
以来
将完全匹配您可以尝试的输入字符串,
"SELECT * FROM institution WHERE name like ?", (data1+'%',)
。
希望这有效!