比较从tkinter Entry到sqlite3表

时间:2017-11-08 22:50:06

标签: python tkinter sqlite

我想知道如何将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()

1 个答案:

答案 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注入攻击。