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

这篇具有很好参考价值的文章主要介绍了界面开发(3)--- PyQt5用户登录界面连接数据库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

上篇文章介绍了如何使用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 中输入的字符串,如果输入的账号在数据库中已存在,或者两次输入的密码不一致,再或者输入为空,则提示注册失败;否则就可以成功注册。

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

  • 连接数据库,获取输入的账号和两次密码
  • 判断两次输入密码是否一致
  • 判断账号是否已被注册
  • 账号注册成功
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()

找回密码

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

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

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实现打开摄像头采集视频功能

日常学习记录,一起交流讨论吧!侵权联系~文章来源地址https://www.toymoban.com/news/detail-452044.html

到了这里,关于界面开发(3)--- PyQt5用户登录界面连接数据库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 使用PYQT5设计登录界面并实现界面跳转

    使用PYQT5设计登录界面并实现界面跳转

    目录   1 UI登录界面的布局 2 UI登录界面布局对应的代码 3 登录界面和界面跳转完整代码 4 跳转界面代码函数和优化界面代码 5 最终效果        其中, 欢迎使用 XXXX 软件管理员密码 使用的是左边功能的 label 类、 登录 使用的是左边功能的 Push Button 类、 管理员和密码的输入

    2024年02月02日
    浏览(14)
  • 人脸识别系统OpenCV+dlib+python(含数据库)Pyqt5界面设计 项目源码 毕业设计

    人脸识别系统OpenCV+dlib+python(含数据库)Pyqt5界面设计 项目源码 毕业设计

    Python语言、dlib、OpenCV、Pyqt5界面设计、sqlite3数据库      本系统使用dlib作为人脸识别工具,dlib提供一个方法可将人脸图片数据映射到128维度的空间向量,如果两张图片来源于同一个人,那么两个图片所映射的空间向量距离就很近,否则就会很远。因此,可以通过提取图片并

    2024年02月05日
    浏览(11)
  • PyQt5制作一个简单的登录界面

    PyQt5制作一个简单的登录界面

    最近在学习GUI设计,分享做的一些小项目。 这篇文我们讲一下如何制作一个简单的登录界面。 如下: 1、QtDesigner里绘制UI界面并设置属性 布局根据个人喜好,部件颜色、字体、背景属性在styleSheet里设置。 2、材料转换(将.ui文件转.py,.qrc文件转_rc.py) 通过PyUIC和PyRcc即可完成。

    2024年02月03日
    浏览(11)
  • PyQt5数据库开发2 5.1 QSqlQueryModel

    目录 一、Qt窗体设计 1. 新建Qt项目 2. 拷贝4-3的部分组件过来 3. 添加资源文件  4. 创建Action

    2024年01月22日
    浏览(30)
  • PyQt5数据库开发2 5.2 QSqlRelationalTableModel

    目录 一、Qt窗体设计 1. 新建Qt项目 2. 添加组件 3. 添加资源  4. 添加Action 

    2024年02月02日
    浏览(15)
  • PyQT5: 构建图形用户界面的Python指南

    PyQt5是一个Python绑定的跨平台C++库,用于创建丰富的图形用户界面(GUI)。它是Qt库的Python接口,Qt库由Qt公司开发,用于开发GUI程序,也称作应用程序框架。在此,我们将详细介绍如何使用PyQt5创建图形用户界面。 在开始之前,我们需要确保已经在Python环境中安装了PyQt5。如果

    2024年02月13日
    浏览(19)
  • PyQt5数据库开发3 6 QSqlQuery完整实操案例【图文详解】

    目录 一、Qt主窗体设计 1. 新建Qt项目 2. 添加一个tableview  3. 添加资源  4. 添加Actio

    2024年02月02日
    浏览(17)
  • 【PyQt5】构建强大的Python图形用户界面应用程序 -- 入门指南

    【PyQt5】构建强大的Python图形用户界面应用程序 -- 入门指南

      作者主页: 爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主 爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域. https://blog.csdn.net/Code_and516?type=blog 个人简介:打工人。 持续分

    2024年02月15日
    浏览(16)
  • 界面开发(1) --- PyQt5环境配置

    界面开发(1) --- PyQt5环境配置

    第一步:首先安装社区版Pycharm 下载地址:https://www.jetbrains.com/pycharm/download/#section=windows 第二步:安装Anaconda3,配置虚拟环境 下载地址:https://www.anaconda.com/ 第三步:安装 Python 第三方库,包括 pyqt5,pyqt5-tools 和 pyqt5designer 在cmd中使用 pip install pyqt5 , pip install pyqt5-tools , pip in

    2024年04月12日
    浏览(14)
  • 【pyqt5界面化开发-5】网格布局(九宫格)界面

    【pyqt5界面化开发-5】网格布局(九宫格)界面

    需要模块:QGridLayout 代码

    2024年02月11日
    浏览(24)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包