以下是我的相关代码,当在登陆界面点击登录输入用户名和密码,会首先在对应表中遍历。当用户名和密码没有时,会返回登录错误,如果正确时遍历时间也会很长,但这个遍历的响应时间很长,如何减少它?
登录逻辑函数
def login(self):
"""
用户登录判断,根据用户名识别用户所属系统,并在对应的数据库中进行登录验证,
成功则打开相应系统的主窗体。
:return:
"""
def check_network_connection():
try:
# 尝试连接到知名的公共DNS服务器
socket.create_connection(('8.8.8.8', 53))
return True # 连接成功,表示网络状态正常
except OSError as e:
return False # 连接失败,则表示当前状态无网络
if not check_network_connection(): # 判断网络是否连接
self.x = show_custom_message_box("注意!!!", "当前状态无网络,请检查网络连接")
return
userName = self.userName.text()
password = self.password.text()
if userName.strip() == '' or password.strip() == '':
self.x = show_custom_message_box("系统提示", "用户名或密码不能为空!")
else:
dbUtil.getCon()
tea_user = Tea(None, None, None, None, None, None, userName, password)
user_data = TuserDao.login(tea_user)
if user_data:
print("登录成功")
TuserDao.currentUser = tea_user
self.m = Tmain.Ui_MainWindow() # 实例化图书管理系统的主窗体
self.m.show() # 显示主窗体
self.hide() # 隐藏登录窗体
else:
self.x = show_custom_message_box("注意!!!", "用户名或密码错误!")
TuserDao
"""数据访问对象"""
from Util import dbUtil
from entity.TuserModel import Tea
# 记录当前用户
currentUser: Tea = None
def login(tuser: Tea):
con = None
try:
con = dbUtil.getCon()
cursor = con.cursor()
# 检查用户名
check_sql = f"SELECT Tuser FROM Teacher WHERE Tuser='{tuser.Tuser}'"
cursor.execute(check_sql)
con.commit()
user = cursor.fetchone()
print(user)
if user is None:
return 0
# 检查密码
check_sql = f"SELECT Tpassword FROM Teacher WHERE Tpassword='{tuser.Tpassword}'"
cursor.execute(check_sql)
con.commit()
Pass = cursor.fetchone()
print(Pass)
if Pass is None:
return 0
# 登录判断
cursor.execute(f"SELECT * FROM Teacher WHERE Tuser='{tuser.Tuser}' AND Tpassword='{tuser.Tpassword}'")
return cursor.fetchone()
except Exception as e:
print(e)
finally:
dbUtil.closeCon(con)
TuserModel
class Tea:
# 编号
TID = None
# 姓名
Tname = None
# 年龄
Tage = None
# 性别
Tsex = None
# 联系电话
Tphone = None
# 住址
Taddress = None
# 用户名
Tuser = None
# 密码
Tpassword = None
def __init__(self, TID, Tname, Tage, Tsex, Tphone, Taddress, Tuser, Tpassword):
self.TID = TID
self.Tname = Tname
self.Tage = Tage
self.Tsex = Tsex
self.Tphone = Tphone
self.Taddress = Taddress
self.Tuser = Tuser
self.Tpassword = Tpassword