首页 > 解决方案 > 使用 Python 在 SQLite 中处理元组

问题描述

我正在尝试查询 sqlite3 数据库以检查是否存在唯一用户 ID。它的工作原理是用户单击 Tkinter 按钮,然后输入他们的 idTag 值。该命令reader.read()用于获取标签的值。一旦用户输入了他们的 idTag,datacheck(): 函数将检查数据库的 userID 列以找到匹配的 idTag 和 userID。

idTag返回一个元组。例如,该idTag值看起来像这样 (123456, q5gln7b8dhe)。我有兴趣检查q5gln7b8dheidTag值的第二个值。这是用户 uid。

for x in row_returned即使 idTag 与存储的用户 ID 不匹配,我的问题仍然是正确的。我认为 c.fetchone() 会不断提取数据,而没有确保 idTag 和 userID 值匹配。或者根本没有数据被提取。
错误信息: for x in row_returned :TypeError : 'NoneType' object is not iterable

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.fetchone()
    for x in row_returned :
        print('Checking for User')
        #checking the second value in tulpe
        if x[1] == idTag:
            print('User Verified')
        else:
            print('User does not exist')

        Database.close()

# Call scanning function 
tagScanner()

标签: pythonsqlite

解决方案


推荐阅读