如何解决Python SQLite3数据库查询绑定错误
我正在尝试查询sqlite3数据库,以检查是否存在唯一的用户ID。用户如何单击Tkinter按钮,然后输入其idTag
值即可。命令reader.read()
用于获取标签的值。用户输入了idTag
后,datacheck():
函数将检查数据库的 userID 列以找到匹配的idTag
和userID
。
错误消息:sqlite3.InterFaceError: Error binding parameter 0 - probably unsupported type
注意:idTag
和userID
是SHA-256哈希值
from tkinter import *
import sqlite3 as sql
import RPi.GPIO as GPIO
from mfrc522 import SimpleMFRC522
reader = SimpleMFRC522()
# Tkinter button click Command
def chk():
# Function that handels getting User ID
def tagScanner():
# Get user id value
idTag = reader.read()
# If tag is scanned
if idTag:
# call Database function to check returned idTag
dataCheck(idTag)
return idTag
# Function handles SQLite3 Database
def dataCheck(idTag):
Database = sql.connect('MedaDataBase.db')
# cursor
c = Database.cursor()
# Check if the idTag maches a value in the userID column of sqlite DB
query = 'SELECT userID FROM Users WHERE userID = ?'
c.execute(query,(str(idTag),))
row_returned = c.fetchall()
if id in row_returned == idTag:
# Found a matching row
print('User Verified')
else:
print('Denied')
Database.close()
# Call scanning function
tagScanner()
解决方法
idTag
的数据类型必须是问题所在,要消除它,只需将查询更改为:
c.execute(query,(str(idTag),))
然后使用c.fetchone()
而不是使用c.fetchall()
并在列表上建立索引,然后查看并选择所需的必要数据。虽然,我认为您不需要索引,因为数据库中的唯一数据是单个用户ID,在这种情况下,我不会为此使用数据库,而只是将数据存储在某个地方并进行相同的检查。>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。