界面开发(3)

您所在的位置:网站首页 web页面如何获取密码和数据 界面开发(3)

界面开发(3)

2024-07-16 14:35| 来源: 网络整理| 查看: 265

文章目录 数据库账户注册账号登录找回密码

为了实现用户登录界面的登录功能,我们必须建立一个数据库,并把账号和对应的密码,存储到数据库中。如果输入的账号和密码与数据库中的一致,那我们就允许用户登录,进入新的界面。

上篇文章介绍了如何使用PyQt5制作用户登录界面,这篇文章在此基础上展开,建立简单数据库,实现账号登录、账户注册以及找回密码的功能。

数据库

数据库是一个按数据结构来存储和管理数据的计算机软件系统。在 python 语言中,常用的数据库有两种:

一种是 pymysql,就是使用 python 连接 Mysql 数据库;另一种是 python 语言自带的数据库 SQLite3,无需安装,直接使用,方便快捷!

我们这里使用 SQLite3,首先建立数据库user,并加入字段 user_id 与 password,代码如下。这样就建立好基础数据库了

import sqlite3 # 连接到SQLite数据库,建立数据库文件mrsoft.db,如果文件不存在,自动建立。 conn = sqlite3.connect('mrsoft.db') # 创建一个cursor(游标) cursor = conn.cursor() # 执行一条SQL语句,创建user,包括账号user_id与密码password cursor.execute('create table user (user_id varchar(30) primary key, password varchar)') # 关闭游标 cursor.close() # 提交事务 conn.commit() # 关闭connection conn.close() 账户注册

账号注册首先要读取 lineEdit 中输入的字符串,如果输入的账号在数据库中已存在,或者两次输入的密码不一致,再或者输入为空,则提示注册失败;否则就可以成功注册。

在这里插入图片描述

连接数据库,获取输入的账号和两次密码判断两次输入密码是否一致判断账号是否已被注册账号注册成功 import sqlite3 conn = sqlite3.connect("./database/mrsoft.db") cursor = conn.cursor() user_id = self.lineEdit.text() # 获取账号 password = self.lineEdit_2.text() # 获取密码 confirm = self.lineEdit_3.text() # 确认密码 # 如果两次输入密码一致都不为空 if password == confirm and password and user_id: if self.id_exist(user_id): QMessageBox.information(self, "提示", "该用户名已存在!", QMessageBox.Ok) else: # sql语句,符合条件的给数据库中加入新的账号和密码 sql = 'insert into user (user_id, password, authority) values (?, ?, "普通用户")' cursor.execute(sql, (user_id, password)) QMessageBox.information(self, "提示", "注册成功!", QMessageBox.Ok) # 如果两次输入密码不一致,发出提示 elif password != confirm: QMessageBox.information(self, "提示", "两次输入的密码不一致,请重新输入!", QMessageBox.Ok) # 其他情况,报错 else: QMessageBox.information(self, "提示", "输入错误!", QMessageBox.Ok) conn.commit() cursor.close() conn.close() # 检验注册的账户是否存在 def id_exist(self, user_id): conn = sqlite3.connect("./database/mrsoft.db") cursor = conn.cursor() user_id = self.lineEdit.text() # 获取账号 # 从数据库中查找是否有输入的账号 sql = 'select user_id from user where user_id=?' cursor.execute(sql, (user_id,)) # 获取符合条件的所有信息 data = cursor.fetchall() cursor.close() conn.close() # 若数据存在表示已有该账号存于数据库中 if data: return True else: return False 账号登录

获取输入账号,密码,与数据库中的账号密码比对,如果一致,则进入新的页面。

import sqlite3 # 连接数据库 conn = sqlite3.connect("./database/mrsoft.db") cursor = conn.cursor() user_id = self.lineEdit.text() # 获取账号 password = self.lineEdit_2.text() # 获取密码 # sql语句,判断数据库中是否拥有这账号和密码 sql = 'select user_id, password, authority from user where user_id=? and password=? and authority=?' cursor.execute(sql, (user_id, password, self.authority)) # 获取一致的部分,存在表示输入正确,不存在提示错误 data = cursor.fetchall() # 账号和密码不为空时候,才进入 if user_id or password: if data: self.core_page.show() else: QMessageBox.information(None, "提示", "您的登录账号/密码错误!", QMessageBox.Ok) cursor.close() conn.close() 找回密码

获取输入的账号和密码,如果账户不存在,提示用户名不存在。如果两次输入的密码一样且不为空,并且账户名存在,则执行密码重置功能。

在这里插入图片描述

import sqlite3 conn = sqlite3.connect("./database/mrsoft.db") cursor = conn.cursor() user_id = self.lineEdit.text() # 获取账号 password = self.lineEdit_2.text() # 获取密码 confirm = self.lineEdit_3.text() # 确认密码 if password == confirm and password and user_id: # 判断账号是否存在,如存在则更改密码,否则报错 if self.id_exist(): sql = 'update user set password=? where user_id=?' cursor.execute(sql, (password, user_id)) QMessageBox.information(self, "提示", "密码已更改!", QMessageBox.Ok) else: QMessageBox.information(self, "提示", "该用户名不存在!", QMessageBox.Ok) elif password != confirm: QMessageBox.information(self, "提示", "两次输入的密码不一致,请重新输入!", QMessageBox.Ok) else: QMessageBox.information(self, "提示", "输入错误!", QMessageBox.Ok) conn.commit() cursor.close() conn.close() # 检验注册的账户是否存在 def id_exist(self, user_id): conn = sqlite3.connect("./database/mrsoft.db") cursor = conn.cursor() user_id = self.lineEdit.text() # 获取账号 # 从数据库中查找是否有输入的账号 sql = 'select user_id from user where user_id=?' cursor.execute(sql, (user_id,)) # 获取符合条件的所有信息 data = cursor.fetchall() cursor.close() conn.close() # 若数据存在表示已有该账号存于数据库中 if data: return True else: return False

该专栏博文地址:

界面开发(1) — PyQt5环境配置 界面开发(2)— 使用PyQt5制作用户登陆界面 界面开发(3)— PyQt5用户登录界面连接数据库 界面开发(4)— PyQt5实现打开图像及视频播放功能 界面开发(5)— PyQt5实现打开摄像头采集视频功能

奥比中光深度相机(一) — 环境配置 奥比中光深度相机(二) — PyQt5实现打开深度摄像头功能

日常学习记录,一起交流讨论吧!侵权联系~



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3