weixin_44596723 2022-12-17 14:24 采纳率: 100%
浏览 64
已结题

PyQt5+mysql完成登录

已经做好了一个界面并完成了注册功能,但无法成功登录

这是注册代码

 def get_Mysql_conn(self):
        try:
            config = {
                "host": "localhost",
                "user": "root",
                "password": "zhaoqifeng159",
                "database": "adimin"
            }
            self.conn = pymysql.connect(**config)
        except pymysql.Error as e:
            print('Error: %s' % e)
    def close_Mysql_conn(self):
        try:
            if self.conn:
                self.conn.close()
        except pymysql.Error as e:
            print('Error: %s' % e)


    def get_Mysql_userinfo(self):
        self.get_Mysql_conn()
        sql = ' SELECT * FROM userinfo' #这里我的登录用户头叫userinfo ,每个人的数据库不同,在建立时初始化。
        # 使用cursor()方法获取操作游标
        cursor = self.conn.cursor()
        # 使用execute()方法执行SQL语句
        cursor.execute(sql)
        # 使用fetchall()方法获取全部数据
        result = cursor.fetchall()
        # 将数据用字典形式存储于result
        result = [dict(zip([k[0] for k in cursor.description], row)) for row in result]
        # 关闭连接
        cursor.close()
        self.close_Mysql_conn()
        return result




    def insert_Mysql_userinfo(self, text):
        print("进入用户注册提交函数")

        self.name = str(self.lineEdit_3.text())
        self.pwd = str(self.lineEdit_4.text())

        self.get_Mysql_conn()#连接数据库
        sql = 'SELECT * FROM userinfo'
        cursor = self.conn.cursor()
        cursor.execute(sql)
        result = cursor.fetchall()
        print("result=", result)
        result = [dict(zip([k[0] for k in cursor.description], row)) for row in result]
        ulist = []
        for item in result:
            ulist.append(item['name'])
        print("ulist=", ulist)

        try:
            sql = "insert into userinfo(name, pwd) values('{}', '{}');".format(self.name,self.pwd)
            cursor.execute(sql)
            if self.name == '' or self.pwd == '':
                self.conn.rollback()
                QMessageBox.warning(self, "警告", "账号或者密码含有空格,注册失败", QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)

            elif self.name in ulist:
                #messagebox.showerror('警告', message='用户名已存在')
                #msg_box = QMessageBox(QMessageBox.Warning, '警告', '用户名已存在')
                QMessageBox.warning(self, "警告", "用户名已存在", QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)

            else:
                # 提交事务
                self.conn.commit()
                #messagebox.showinfo(title='恭喜', message='注册成功')
                #msg_box = QMessageBox(QMessageBox.information, '恭喜', '注册成功')
                QMessageBox.information(self, "欢迎", "注册成功", QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)
                mainface.close()  # 关闭注册界面,在这之后就可以进入你编写的其他界面了。
            cursor.close()
            self.close_conn()
        except:
            # 限制提交
            self.conn.rollback()


这是登录代码


    def on_pushButton_Login_clicked(self, text):
        user_name = self.lineEdit.text()
        user_password = self.lineEdit_2.text()
        print("进入账号判断函数")
        self.get_Mysql_conn()  # 连接数据库
        # 获取数据库中的值
        sql = 'SELECT * FROM userinfo'
        cursor = self.conn.cursor()
        cursor.execute(sql)
        results=cursor.fetchall()
        print(results)
        name=[]
        password=[]
        for row in results:
            adimin_nmae=row[0]
            name.append(adimin_nmae)
            admin_password=row[1]
            password.append(admin_password)
        print(name)
        print(password)
        # 判断是否存在该账号
        flag=0
        print(type(self.lineEdit.text()))
        for i in range(len(name)):
            if user_name == name[i] and user_password == [i]:
                flag=1
                
            else:
                pass
                # print(type(name[i]))
                # print(type(self.lineEdit.text()))
        if flag == 1:
            self.pushButton_3.clicked.connect(self.logindef)
        else:
            QMessageBox.question(self, "警告", "用户名或密码不正确", QMessageBox.Yes)



这是数据库

img

登录上明明输入正确还是显示不正确

img

######有没有好心人修正一下,或者写一个新的登录的方法

  • 写回答

5条回答 默认 最新

  • Ko-walski 2022-12-17 16:32
    关注

    为什么登录这么麻烦,

    def on_pushButton_Login_clicked(self, text):
        user_name = self.lineEdit.text()
        user_password = self.lineEdit_2.text()
        print("进入账号判断函数")
        self.get_Mysql_conn()  # 连接数据库
        # 获取数据库中的值
        sql = 'SELECT * FROM userinfo where name="{}" and pwd="{}"'.format(user_name, user_password)
        cursor = self.conn.cursor()
        cursor.execute(sql)
        results = cursor.fetchone()
        print(results)
        if results == None:
            QMessageBox.question(self, "警告", "用户名或密码不正确", QMessageBox.Yes)
        else:
            print("登录成功,这里处理自己的逻辑")
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 12月26日
  • 已采纳回答 12月18日
  • 创建了问题 12月17日

悬赏问题

  • ¥15 微信支付转账凭证,如何解决
  • ¥15 在win10下使用指纹登录时,界面上的文字最后一个字产生换行现象
  • ¥20 使用AT89C51微控制器和MAX7219驱动器来实现0到99秒的秒表计数,有开始和暂停以及复位功能,请写出C语言程序
  • ¥15 51单片机 双路ad同步采样
  • ¥15 使用xdocreport 生成word
  • ¥15 请教怎么用MATLAB求坐标
  • ¥15 gradle整合es,在创建索引时报错
  • ¥15 关于模型训练的一个问题
  • ¥15 装了几千台服务器从来没遇到这种问题,哎看下哪位帮我解决吧
  • ¥15 单片机程序上的困难问题