Qt Designer登录界面访问MySQL数据库信息完成登录

一、测试连接数据库

参考链接

1. 安装MySQL的包

pip install pymysql -i https://pypi.doubanio.com/simple #加入豆瓣源

或者
在这里插入图片描述

2. 连接数据库

2.1 创建DatabaseOperations.py,实现数据库连接和关闭的功能

import pymysql

"""
配置端口、用户名、主机、密码
"""
def get_conn(): # 实现数据库连接的功能
    try:
        conn = pymysql.connect(host='localhost',#主机
                                     user='root',#用户'NoneType' object has no attribute 'cursor'
                                     port=3306,#端口
                                     password='xxx',#密码
                                     charset='utf8',#编码
                                     database='hsp_db02'#数据库名称,实际是表的名称
                                     )
        # 必须先和数据库建立一个传输数据的连接通道,也就是Connection实例,需要用到pymysql下的connect()方法
        print('数据库连接成功')
        return conn # 返回初始化好的Connection实例
    except pymysql.connect.Error:
        print('数据库连接错误')

def close_conn(conn,cursor):  # conn:连接实例   cursor:游标
    try:
        if cursor:
            cursor.close()
        if conn:
            conn.close()
    except Exception as s:
        print(s)
    finally:
        try:
            cursor.close()
        except:
            pass
        try:
            conn.close()
        except:
            pass

2.2 测试一下上述代码是否成功,在databaseTest.py中测试
参考链接

import DatabaseOperations as dbopt
#数据库操作流程
#1、获取连接
conn = dbopt.get_conn()
#2、获取cursor游标
cur = conn.cursor()
#3、sql语句
sql = 'insert into goods(id, goods_name,price) values(100, "华为手机", 2000)'#这里的类别是表,leibie_name是列名
#4、执行语句
cur.execute(sql)
#5、insert,update,delete必须提交显示
conn.commit()
#6、关闭资源
dbopt.close_conn(conn,cur)

使用NAVICAT连接数据库查找有无将上述代码中INSERT插入的数据写入数据库中
在这里插入图片描述

二、将Qt Designer中设计的.ui文件通过PyCharm显示

1. 将.ui转换为.py文件

pyuic5 -o log_in.py login.ui

2. 在PyCharm中运行显示界面

main.py

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
import log_in  # log_in.py导入

if __name__ == '__main__':
    app = QApplication(sys.argv)  # 创建QApplication对象,该语句必须要有,否则界面闪现

    windowLogin = QMainWindow()
    uiLogin = log_in.Ui_login_MainWindow()
    uiLogin.setupUi(windowLogin)
    windowLogin.show()

    sys.exit(app.exec_())  # 启动应用程序的事件循环

注意问题

  1. Pycharm运行程序后,Qt Designer 插入的背景图片无法显示在界面
    在这里插入图片描述
    因为在Qt Designer添加背景图片时,添加的那个qrc文件(我这是picture.qrc文件),没有在pycharm中没有转换成代码。在pycharm将qrc转换成py文件格式,需要添加一个外部工具,那个程序应该叫pyrcc5.exe,具体点开链接查看如何创建.qrc文件
    然后我们在Pycharm中打开picture.qrc文件,右击选择pyrcc这个External Tools,然后就会生成对应的picture_rc.py文件。
    最后在log_in.py中就能运行import picture_rc

三、点击登录按钮实现连接数据库

  1. 对登录界面的“登录”按钮添加槽/函数
    '''绑定登录按钮到处理函数'''
    uiLogin.login_pushButton.clicked.connect(pushButtonLogin_click)

注意上面的程序需要写在sys.exit(app.exec_())之前。
2. 实现pushButtonLogin_click()函数

def pushButtonLogin_click():
    # 数据库操作流程
    # 1、获取数据库连接
    db = dbopt.get_conn()
    # 判断用户名密码
    username = uiLogin.user_name_lineEdit.text()  # 获取输入的用户名文本
    password = uiLogin.pwd_lineEdit.text()  # 获取输入的密码文本

    '''如果数据库有该用户,则跳转到下一个菜单界面,并关闭登录界面'''
    if len(username) and len(password) and has_user(username, password, db):
        print("审核成功")
        # windowApp.show()
        windowLogin.close()  # 关闭该登录界面
    else:  # 使用 PyQt 中的 QMessageBox 类创建一个警告对话框,并在用户输入的用户名或密码错误时显示该对话框
        QMessageBox.warning(windowLogin,
                            "警告",
                            "用户名或密码错误!",
                            QMessageBox.Yes)

以上代码未写“跳转下一个菜单界面”的功能,暂时使用print(“审核成功”)代替。
3. 实现has_user()函数

def has_user(Account, Passwd, connection):
    # 使用哈希函数对密码进行处理,增加安全性
    # hashed_passwd = hashlib.sha256(Passwd.encode()).hexdigest()

    # 使用参数化查询构建 SQL 语句
    sql = "SELECT * FROM user WHERE account = %s AND passwd = %s"

    # 尝试执行查询
    try:
        with connection.cursor() as cursor:  # 创建游标
            cursor.execute(sql, (Account, Passwd))
            print(sql)
            print((Account, Passwd))
            result = cursor.fetchone()
            # 如果结果不为None,表示找到匹配的用户
            return result is not None
            # 关闭数据库资源
            dbopt.close_conn(db, cursor)
    except Exception as e:
        print(f"Error during database query: {e}")
        return False

四、数据库中添加用户名和密码

  1. 使用NAVICAT连接MySQL
    在这里插入图片描述
  2. 创建数据库hsp_db02并创建表user
    在这里插入图片描述
  3. 在表中插入用户名和密码
    在这里插入图片描述

参考链接

界面与业务逻辑分离

  • 22
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
创建一个 MySQL 数据库并将其连接到 Qt 登录界面中,可以按照以下步骤进行: 1. 安装 MySQL 数据库并创建一个新的数据库。 2. 在 Qt 中打开一个新项目,选择 Qt Widgets 应用程序。 3. 在 Qt 中创建一个新的登录窗口,可以使用 Qt Designer 来创建一个自定义的窗口。 4. 在 Qt 项目中添加 MySQL 驱动程序,可以在 Qt 的安装目录中找到 MySQL 驱动程序的库文件。 5. 在 Qt 项目中添加 MySQL 头文件和库文件,以便能够使用 MySQL API。 6. 在 Qt 项目中编写代码来连接到 MySQL 数据库,并在登录窗口中验证用户输入的用户名和密码。 下面是一个简单的示例代码,用于连接到 MySQL 数据库并验证用户登录信息: ```cpp #include <QtSql> // 数据库连接信息 const QString DATABASE_HOSTNAME = "localhost"; const QString DATABASE_NAME = "mydatabase"; const QString DATABASE_USERNAME = "myuser"; const QString DATABASE_PASSWORD = "mypassword"; // 数据库连接 QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName(DATABASE_HOSTNAME); db.setDatabaseName(DATABASE_NAME); db.setUserName(DATABASE_USERNAME); db.setPassword(DATABASE_PASSWORD); if (!db.open()) { // 连接失败 } else { // 连接成功 } // 用户登录验证 QString username = ui->lineEditUsername->text(); QString password = ui->lineEditPassword->text(); QSqlQuery query; query.prepare("SELECT * FROM users WHERE username = :username AND password = :password"); query.bindValue(":username", username); query.bindValue(":password", password); query.exec(); if (query.first()) { // 登录成功 } else { // 登录失败 } ``` 这是一个简单的示例,你可以根据自己的需求来修改代码,实现一个更完整的登录系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值