def login_in(self): account = self.ui.lineEdit_L_account.text() password = self.ui.lineEdit_L_password.text() account_list = [] password_list = [] conn = pymysql.connect( user='root', password='796691xjl@', host='127.0.0.1', database='mysql', port=3306 ) cur = conn.cursor() cur.execute('SELECT * FROM films.manger') rows = cur.fetchall() for row in rows: account_list.append(row[0]) password_list.append(row[1]) print(account_list, password_list) conn.commit() conn.close() for i in range(len(account_list)): if len(account) == 0 or len(password) == 0: self.ui.stackedWidget.setCurrentIndex(1) elif account == account_list[i] and password == password_list[i]: global manger_now manger_now = account self.win = MainWindow() self.close() else: self.ui.stackedWidget.setCurrentIndex(2) print("wrong")
时间: 2024-02-14 21:06:17 浏览: 64
qt.rar_lineedit_visual c
这段代码的作用是连接 MySQL 数据库,查询 manger 表中的账号和密码数据,并与用户输入的账号和密码进行比较,如果匹配则显示 MainWindow 窗口,否则显示错误提示。
在这段代码中,我发现有一个问题,就是如果 manger 表中没有任何数据,account_list 和 password_list 都将为空列表,此时 for 循环将不会执行任何操作,因此登录过程将会失败。为了解决这个问题,你可以在 for 循环前添加一个 if 语句来检查是否有数据,例如:
```
cur.execute('SELECT * FROM films.manger')
rows = cur.fetchall()
if len(rows) == 0:
self.ui.stackedWidget.setCurrentIndex(2)
print("No data found")
else:
for row in rows:
account_list.append(row[0])
password_list.append(row[1])
for i in range(len(account_list)):
# 省略后续代码
```
这样修改后,如果 manger 表中没有任何数据,登录界面将会显示错误提示。
阅读全文