千家信息网

Python+Tkinter连接本地MySQL数据库怎么实现注册登录

发表于:2024-09-21 作者:千家信息网编辑
千家信息网最后更新 2024年09月21日,这篇文章主要介绍"Python+Tkinter连接本地MySQL数据库怎么实现注册登录",在日常操作中,相信很多人在Python+Tkinter连接本地MySQL数据库怎么实现注册登录问题上存在疑惑,
千家信息网最后更新 2024年09月21日Python+Tkinter连接本地MySQL数据库怎么实现注册登录

这篇文章主要介绍"Python+Tkinter连接本地MySQL数据库怎么实现注册登录",在日常操作中,相信很多人在Python+Tkinter连接本地MySQL数据库怎么实现注册登录问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Python+Tkinter连接本地MySQL数据库怎么实现注册登录"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

项目结构:

源代码:

# -*- coding: utf-8 -*-"""@date:  2022/01/09 17:40@author: Anker@python:v3.10""" import tkinter as tkimport tkinter.messageboximport pymysql # 定义要执行的创建表的SQL语句test_sql = """                CREATE TABLE IF NOT EXISTS user(                id INT auto_increment PRIMARY KEY,                name varchar(20) not null,                password varchar(20) not null                )ENGINE=innodb DEFAULT CHARSET=utf8;           """ # 登录窗口window = tk.Tk()window.title('学生考试系统')window.geometry('800x500') # 登录背景图片canvas = tk.Canvas(window, height=1920, width=1080)login_background = tk.PhotoImage(file='./view.png')login_image = canvas.create_image(0, 0, anchor='nw', image=login_background)canvas.pack(side='top') # 用户名密码标签tk.Label(window, text='用户名:', bg='yellow').place(x=300, y=200)tk.Label(window, text='密   码:', bg='yellow').place(x=300, y=250) # 用户名输入框var_user_name = tk.StringVar()entry_user_name = tk.Entry(window, textvariable=var_user_name)entry_user_name.place(x=370, y=200) # 密码输入框var_user_pwd = tk.StringVar()entry_user_pwd = tk.Entry(window, textvariable=var_user_pwd, show='*')entry_user_pwd.place(x=370, y=250)  # 登录函数def user_login():    # 输入框获取用户名密码    user_name = var_user_name.get()    user_password = var_user_pwd.get()    # 连接test_sql数据库    conn = pymysql.connect(host="localhost", user="root", password="123456", database="test_sql", charset="utf8")    curs = conn.cursor()    # 执行SQL语句,创建user数据表    curs.execute(test_sql)    # 执行SQL语句,从user数据表中查询name和password字段值    curs.execute("SELECT name,password FROM user")    # 将数据库查询的结果保存在result中    result = curs.fetchall()    # fetchone()函数它的返回值是单个的元组, 也就是一行记录, 如果没有结果, 那就会返回null    # fetchall()函数它的返回值是多个元组, 即返回多个行记录, 如果没有结果, 返回的是()    # assert result, "数据库无该用户信息"   # 添加断言,判断数据库有无该用户信息,没有就直接断言错误     # 登录账号操作    name_list = [it[0] for it in result]    # 从数据库查询的result中遍历查询元组中第一个元素name    # 判断用户名或密码不能为空    if not(user_name and user_password):        tk.messagebox.showwarning(title='警告', message='用户名或密码不能为空')    # 判断用户名和密码是否匹配    elif user_name in name_list:        if user_password == result[name_list.index(user_name)][1]:            tk.messagebox.showinfo(title='欢迎您', message='       登录成功!\r\n当前登录账号为:' + user_name)            selection()        else:            tk.messagebox.showerror(title='错误', message='密码输入错误')    # 账号不在数据库中,则弹出是否注册的框    else:        is_signup = tk.messagebox.askyesno(title='提示', message='该账号不存在,是否现在注册?')        if is_signup:            user_register()  # 注册函数def user_register():    # 确认注册函数    def register_confirm():        # 获取输入框内的内容        name = new_name.get()        password = new_password.get()        password_confirm = new_password_confirm.get()        # 先在本地手动创建一个test_sql数据库,然后连接该数据库        conn = pymysql.connect(host="localhost", user="root", password="123456", database="test_sql", charset="utf8")        curs = conn.cursor()         # 注册账号操作        try:            # 执行SQL语句,创建user数据表            curs.execute(test_sql)            # 向user数据表中插入语句            insert_sql = "INSERT INTO user(name, password) VALUES ('%s', '%s')" % (name, password)            # 读取user数据表中的name和password字段值            read_sql = f'''select * from user where name = "{name}" and password = "{password}" '''            user_data = curs.execute(read_sql)            # 判断注册账号和密码            if not (name and password):                tk.messagebox.showwarning(title='警告', message='注册账号或密码不能为空')            elif password != password_confirm:                tk.messagebox.showwarning(title='警告', message='两次密码输入不一致,请重新输入')            else:                if user_data.real:                    tk.messagebox.showwarning(title='警告', message='该注册账号已存在')                else:                    curs.execute(insert_sql)                    tk.messagebox.showinfo(title='恭喜您', message='      注册成功!\r\n注册账号为:' + name)                    print("数据插入成功")            # 提交到数据库执行            conn.commit()            curs.close()        except IOError:            print("数据插入失败")            conn.rollback()        # 关闭数据库连接        conn.close()        window_sign_up.destroy()     # 注册窗口    window_sign_up = tk.Toplevel(window)    window_sign_up.geometry('350x200')    window_sign_up.title('欢迎注册')     # 注册账号及标签、输入框    new_name = tk.StringVar()    tk.Label(window_sign_up, bg='green', text='注册账号:').place(x=50, y=10)    tk.Entry(window_sign_up, textvariable=new_name).place(x=150, y=10)     # 注册密码及标签、输入框    new_password = tk.StringVar()    tk.Label(window_sign_up, bg='green', text='密      码:').place(x=50, y=50)    tk.Entry(window_sign_up, textvariable=new_password, show='*').place(x=150, y=50)     # 重复密码及标签、输入框    new_password_confirm = tk.StringVar()    tk.Label(window_sign_up, bg='green', text='确认密码:').place(x=50, y=90)    tk.Entry(window_sign_up, textvariable=new_password_confirm, show='*').place(x=150, y=90)     # 确认注册按钮及位置    bt_confirm_sign_up = tk.Button(window_sign_up, bg='green', text='确认注册', command=register_confirm)    bt_confirm_sign_up.place(x=150, y=130)  # 选择题函数def selection():     def wrong():        tk.messagebox.showerror(title='错误', message='抱歉,您答错了')     def right():        tk.messagebox.showinfo(title='提示', message='恭喜您,答对了')     # 选择题窗口    window_options = tk.Toplevel(window)    window_options.geometry('350x200')    window_options.title('选择题')    # 在图形界面上创建一个标签label用以显示并放置    var = tk.StringVar()  # 定义一个var用来将radiobutton的值和Label的值联系在一起.    lab = tk.Label(window_options, bg='red', fg='white', width=50)    lab.pack()    lab.config(text='第1题:两个锐角均为60度的三角形是什么三角形()' + var.get())    # 创建3个radiobutton选项,其中variable=var, value='A'表示:当鼠标选中其中一个选项,把value的值A放到变量var中,然后赋值给variable    radio1 = tk.Radiobutton(window_options, text='A:锐角三角形', variable=var, value='A', command=wrong)    radio1.pack()    radio2 = tk.Radiobutton(window_options, text='B:钝角三角形', variable=var, value='B', command=wrong)    radio2.pack()    radio3 = tk.Radiobutton(window_options, text='C:等边三角形', variable=var, value='C', command=right)    radio3.pack()    radio4 = tk.Radiobutton(window_options, text='D:直角三角形', variable=var, value='D', command=wrong)    radio4.pack()  # 注册和登录按钮bt_register = tk.Button(window, bg='yellow', text='注册', command=user_register)bt_register.place(x=380, y=300)bt_login = tk.Button(window, bg='yellow', text='登录', command=user_login)bt_login.place(x=440, y=300) # 主循环window.mainloop()

到此,关于"Python+Tkinter连接本地MySQL数据库怎么实现注册登录"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

数据 数据库 密码 登录 账号 输入 用户 用户名 三角形 函数 数据表 标签 语句 错误 三角 学习 查询 成功 结果 选择题 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 服务器策略包括什么 项目管理在软件开发中的地位 软件开发行业优势和不足 宝塔服务器统一管理软件 云数据库怎么连接微信小程序 360网络安全日常 登录服务器软件 服务器查看空间 浦东新区管理软件开发售后保障 c 数据库写入时间 企业管理器和服务器 软件开发数据导入方式怎么选择 合肥驰名互联网科技有限公司 数据库知识点笔记 plc软件开发协议 网络安全责任事件追究 宁夏仓储生鲜软件开发 进口服务器哪家好 物流设备与网络技术应用实验 汽车自动驾驶怎么连接网络安全 化合物键参数数据库 网络安全投诉入口 服务器硬盘什么样的 我身边的网络安全故事600字 数据库封锁技术常用的两种锁 网络安全问题加强网络安全意识 我国国产数据库的发展与应用综述 安徽浪潮服务器维修调试云服务器 魔兽世界俄罗斯服务器语言 山西发展软件开发设计
0