文章目录

  • 数据库
  • 账户注册
  • 账号登录
  • 找回密码

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

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

数据库

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

  1. 一种是 pymysql,就是使用 python 连接 Mysql 数据库;
  2. 另一种是 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 sqlite3conn = 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 Trueelse: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 sqlite3conn = 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 Trueelse:return False

该专栏博文地址:

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

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

界面开发(3)--- PyQt5用户登录界面连接数据库相关推荐

  1. php简单的登录界面,PHP实现简单用户登录界面

    用PHP实现简单的用户登录界面,供大家参考,具体内容如下 首先要实现用户登录界面需要一个html登录表单 用户名: 密码: 重复密码: 然后开始按照流程图写PHP代码 if(trim($_POST[' ...

  2. java gui界面设计qq_Java swing界面开发(仿QQ登录界面)

    首先引入包的概念,包:给代码分类,提高的了代码的可读性,封装后方便管理.在包中类的引入:import 包名.类名;包名需小写,多单词用"."隔开.类名的命名规范:首字母大写其后的每 ...

  3. python用户登录界面tkinter_python tkinter制作用户登录界面-Go语言中文社区

    学习一下莫烦Python的tkinter教程,根据教程制作了用户登录注册页.基本功能为检查登录.注册.清明上河图观看网址http://news.sohu.com/s2015/qmsht/index.s ...

  4. Bootstrap4+MySQL前后端综合实训-Day06-AM【eclipse详细配置Tomcat、开发web项目、servlet、连接MySQL8.0数据库、用户登录界面的编写与验证、分页查询】

    [Bootstrap4前端框架+MySQL数据库]前后端综合实训[10天课程 博客汇总表 详细笔记][附:实训所有代码] 目   录 eclipse重置视图 MySQL数据库--建数据库.建数据库 s ...

  5. android studio 微信登录界面,如何使用Android Studio开发用户登录界面

    满意答案 zhou9081 2016.05.21 采纳率:51%    等级:7 已帮助:411人 如何使用Android Studio开发用户登录界面,具体解决方案如下: 解决方案1: <:t ...

  6. java用户登录界面并连接数据库(教师工资查询)

    java用户登录界面并连接数据库(教师工资查询) 环境 语言:Java:数据库:MySql:环境:JDK8+Eclipse 步骤 1.数据库设计 要求: 实现: 2.实现该教师工资表管理所设计的类和文 ...

  7. idea中创建maven依赖下的web工程(一)----用户登录界面

    如果你对idea中创建maven依赖下的web工程不是很了解,请参见上一篇博客--idea中创建maven依赖下的第一个web工程 各路大神对于idea的基本操作已经非常的熟悉了, 嗯,我还是一只入门 ...

  8. 基于PyQt5实现登录界面设计

    基于Python和PyQt5实现登录界面 实现说明 通过登录界面输入账号密码与数据库中存在的账号密码进行比对,并对用户角色(管理员0/普通用户1)进行识别.密码错误时,提示错误信息,密码正确则跳转至用 ...

  9. 用户登录界面 - 记事本风格HTML代码

    简介: 这是一个记事本风格的用户登录界面,非常逼真,HTML 代码已经改成了中文的,经过测试,兼容 IE6+.Firefox.Chrome 等浏览器. 优化了自适应问题. 喜欢的可以下载. 从dowe ...

最新文章

  1. python基础===两个list之间移动元素
  2. 李宏毅机器学习(十)GPT-3
  3. 抱歉,程序员的工作不能用时间来衡量
  4. 史上最详细Vue-CLI脚手架快速创建Vue项目教程
  5. 用户不在sudoers文件中的解决方法 .
  6. Python3.5(十三)迭代器生成器
  7. chan算法matlab,MATLAB实现基于Chan氏算法的二维TDOA定位-Go语言中文社区
  8. 温度转换 python
  9. 前端生成二维码图片以及条形码图片
  10. 单链表的定义、特点、结构及其一些基本操作
  11. 24个扁平风格图标的PSD格式免费下载
  12. CUDA11.4、CUDNN、Pytorch安装
  13. 我的世界未能从服务器注册表数据,【经验之谈】“User Profile Service 服务未能登录,无法加载用户配置文件”实战历程...
  14. SpringBoot消息转换器:HttpMessageConverter
  15. Go 语言优势、对比
  16. int类型和Integer在hibernate影射时的区别
  17. py218-基于Python+django的零食销售商城网站#毕业设计
  18. 少年头条对垒中年腾讯——解局两代互联网公司的商业之战
  19. 访问学者英语口语顺利通关秘诀
  20. pt tools 看介绍说是一款PT工具,具体有什么用呢?

热门文章

  1. 重新认识笔记体系的标签:了解 tag 和 label 的区别
  2. mysql concat 不同字符集_字符编码 - 如何将整个MySQL数据库字符集和排序规则转换为UTF-8?...
  3. 多媒体声光电技术助力景区文旅夜游
  4. 如何打造特色小镇的夜游可玩性
  5. 可视化色码表--绘图视觉不可或缺的元素
  6. OrCAD Allegro元器件MYsql数据库管理 教程二
  7. 公司开始走下坡路,如何保持个人能力的提升?
  8. 腾讯天美后端2018实习一面面经
  9. Java中 DecimalFormat 用法详解
  10. 事件里面元素怎么立即刷新dom(页面),而不是等所有代码运行完再刷新。(强制刷新DOM)