我想知道如何将tkinter窗口中的条目与sqlite3表中的数据进行比较。我可以从表格中读取,但与“" Entry"它永远不会出现,好像已经找到了条目。
def __init__(self, master):
self.frame = Frame(master)
self.frame.pack()
self.firstname = StringVar()
self.surname = StringVar()
def find(self):
x = c.execute('SELECT surname FROM MemberRecordsTable')
if self.surname.get() == x:
found = Label(self.frame, text = 'Name found')
found.pack()
else:
notfound = Label(self.frame, text = 'Name not found')
notfound.pack()
def checkpayments(self):
checkmember = Entry(self.frame, textvariable = self.surname)
checkmember.pack()
checkmember2 = Entry(self.frame, textvariable = self.firstname)
checkmember2.pack()
findmember = Button(self.frame, text = 'Find member', command = self.find)
findmember.pack()
答案 0 :(得分:1)
cursor.execute()
会返回sqlite3.Cursor
个对象。然后,您需要使用该游标来获取实际的查询结果。你可以用cursor.fetchone()
来获取第一个结果。
但是,由于您要检查数据库中是否有任何行包含姓氏列中self.surname
的值,您可以这样查询:
c.execute('SELECT surname FROM MemberRecordsTable where surname = ?', (self.surname.get(),))
if c.fetchone():
print('Found')
else:
print('Not found')
此查询将返回self.surname
列中值为surname
的数据库中的行。使用参数化执行查询以减轻接受任意用户输入数据时出现的SQL注入攻击。