Вопрос:

Сравнение имен из tkinter Entry в таблицу sqlite3

python tkinter sqlite

196 просмотра

1 ответ

27 Репутация автора

Мне интересно, как сравнить запись в окне tkinter с данными в таблице sqlite3. Я могу читать из таблицы, но по сравнению с «Входом» он никогда не выходит так, как будто запись была найдена.

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()
Автор: Jack Источник Размещён: 08.11.2017 10:50

Ответы (1)


1 плюс

62542 Репутация автора

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-инъекций, которые присутствуют при принятии произвольных данных, введенных пользователем.

Автор: mhawke Размещён: 08.11.2017 11:07
Вопросы из категории :
32x32