#python #sqlite #rfid
#python #sqlite #rfid
Вопрос:
Итак, я пытаюсь получить все идентификаторы пользователей из моей базы данных sqlite3. У меня есть графический интерфейс tkinter с регистрацией Button
когда пользователь нажимает кнопку, ему предлагается отсканировать свою метку (rfid). Я пытаюсь сравнить идентификатор тега после сканирования тега со всеми идентификаторами пользователей в базе данных и проверить, совпадают ли они. Если они совпадают, я пытаюсь напечатать User Verified, если тег не соответствует одному из идентификаторов пользователя в таблице, которую я пытаюсь напечатать, Пользователь не существует, отказано
from tkinter import *
import sqlite3 as sql
import RPi.GPIO as GPIO
from mfrc522 import SimpleMFRC522
reader = SimpleMFRC522()
global r
global uid_tag
def chk():
Database = sql.connect('MedaDataBase.db')
# cursor
c= Database.cursor()
#Query uid database
c.execute("SELECT*, userID FROM Users ")
#Fetch all uids from Database
r= c.fetchall()
if r:
#Getting user uid from tag
id,uid_tag = reader.read()
print(uid_tag)
checker()
def checker():
global uid_tag
global r
for x in r:
#If userId from tag is in the database
if uid_tag == x:
print("User Verified")
else:
print("Denied")
Database.commit()
Database.close()
Ответ №1:
в chk() r не определен как глобальный, поэтому вы читаете в локальную переменную, а глобальная переменная все еще неинициализирована.
Комментарии:
1. Да, это было оно, спасибо! Однако сейчас у меня возникла новая проблема: данные не извлекаются из базы данных, потому что выбрасывается
else
оператор в функции checker().2. @Tibah_lun Ты знаешь, что
x
это будет набор результатов, верно? Поэтомуif uid_tag == x:
будет false, так какuid_tag
не равно (…,….,…), Моя попыткаx[0]
илиx[1]
или что-то еще?