【发布时间】:2022-01-25 14:44:13
【问题描述】:
我尝试通过从 MySQL 获取数据来创建验证器。从 MySQL 获取数据后,我有一个包含 2 个元组的列表。但是当我尝试在元组中打印元素时,我的代码不是从元组中打印元素,而是打印了每个元素的字母。这是我的代码:
from tkinter import *
from tkinter import messagebox
from mysqlconnect import my_connect
from mysqlconnect import my_cursor
mysql_get_all_user_information_query = "SELECT user_name, user_password FROM USER_INFORMATION"
my_cursor.execute(mysql_get_all_user_information_query)
all_information_record = list(my_cursor.fetchall())
def validator_username_password():
global all_information_record
username = entry_username.get()
password = entry_password.get()
if username == "" and password == "":
messagebox.showinfo("", "Blank Field Are Not Allowed")
for user_record in all_information_record:
for user_name_pass in user_record:
print(user_name_pass[0])
print(user_name_pass[1])
if username == user_name_pass[0] and password == user_name_pass[1]:
messagebox.showinfo("", "Login Success")
root.destroy()
else:
messagebox.showinfo("", "Incorrent Username and Password")
这是输出(我有 account1: admin,密码:123456 account2: admin123,密码:123456):
非常感谢大家!!!
【问题讨论】:
-
我不知道将密码放在网络上的策略。代码的问题是,如果您遍历一个列表,然后遍历该列表中的字符串,就会发生这种情况:一个字母一个字母地显示。
-
从数据库中获取数据后,我得到一个包含 2 个元组的列表。我遍历一个列表以获取元组,然后遍历元组以获取包括用户名和密码在内的元素。
-
第二次迭代不需要,可以访问第一次迭代的用户名和密码。嵌套的 for 循环通常也是一个性能问题。
-
不胜感激看看下面的答案:)