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安全错误
数据库的锁怎样保障安全
中国网络安全行业分析
数据库管理周记
ass数据库
BIM属于软件开发吗
公有云更新服务器
web服务器端口排名
服务器isac口 isac全称
高智能移动软件开发开设院校
天象网络技术有限公司是骗人的吗
aha数据库免费吗
数据库系统概论的答案
数据库常见指令
北京文档软件开发来电咨询
lol出现服务器异常
徐州应用软件开发公司
阿里数据库管理师好找工作吗
r740服务器标配多少瓦电源
rpa3.0阶段部署在云服务器
ftb服务器怎么打开
党政网络安全大赛
c 数据库查询多行语句
歌尔招聘软件开发岗工资
河源专业软件开发
xp系统做文件服务器
猪e网上言行抓好网络安全
网络传真服务器链接
网络安全热点问题
网络技术不断进步还有隐私吗
链接调用数据库
北京水电缴费软件开发团队