Python+Mysql实现登录注册完整代码示例

 更新时间:2024年03月29日 09:22:06   作者:我是小石呀  
在开发中用户注册和登录是常见的功能需求,这篇文章主要给大家介绍了关于Python+Mysql实现登录注册的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下

简介

基于Tkinter的Python程序,实现了一个简单的用户登录和注册系统。程序连接了一个MySQL数据库,用户可以通过输入正确的用户名和密码进行登录,或者注册新的用户账号。

代码中创建了两个窗口,一个用于登录,一个用于注册。用户可以在登录窗口输入用户名和密码,点击登录按钮进行登录操作。如果用户没有账号,可以点击注册按钮打开注册窗口,输入新的用户名和密码,然后点击注册按钮进行注册操作。

注册信息会存储在MySQL数据库中,当用户注册成功后,会收到提示并返回到登录窗口进行登录操作。如果用户输入的账号或密码错误,会收到相应的错误提示。

整个程序的界面使用了Tkinter库进行设计,包括标签、文本框和按钮等控件。数据库连接和操作使用了pymysql库。

总体来说,这个程序是一个简单的用户登录和注册系统,可以帮助用户管理账号信息,并且实现了与数据库的交互。

工作环境

pycharm 2023.3.12

MySql 8.0.22

所用三方包

  • tkinter()
  • PyMysql(1.1.0)

代码实现

界面布局

登录界面

# 登录页面控件
lable1 = tkinter.Label(root, text="账号:", font=('Arial', 15), width=10)  # 创建账号标签
lable1.place(x=80, y=10)  # 设置账号标签的位置
text1 = tkinter.Text(root, width=10, height=1, bg="white", fg="black", font=("宋体", 18), bd='0')  # 创建账号输入文本框
text1.place(x=170, y=10)  # 设置账号输入文本框的位置

lable2 = tkinter.Label(root, text="密码:", font=('Arial', 15), width=10)  # 创建密码标签
lable2.place(x=80, y=80)  # 设置密码标签的位置
text2 = tkinter.Entry(root, show="*", width=10, bg="white", fg="black", font=("宋体", 18), bd='0')  # 创建密码输入文本框
text2.place(x=170, y=80)  # 设置密码输入文本框的位置

button0 = tkinter.Button(root, text="登录", command=open_login_window)  # 创建登录按钮,并将按钮与登录函数关联
button0.place(x=180, y=150)  # 设置登录按钮位置
button1 = tkinter.Button(root, text="退出", command=root.quit)  # 创建退出按钮,并设置点击事件为退出程序
button1.place(x=250, y=150)  # 设置退出按钮位置

# 注册按钮
register_button = tkinter.Button(root, text="注册", command=open_register_window)
register_button.place(x=110, y=150)

注册界面

# 注册页面控件
register_window = tkinter.Toplevel(root)
register_window.title("注册")
register_window.geometry("400x250")
register_window.protocol("WM_DELETE_WINDOW", close_register_window)  # 隐藏窗口而不是关闭
register_window.withdraw()  # 隐藏窗口

register_lable1 = tkinter.Label(register_window, text="账号:", font=('Arial', 15), width=10)
register_lable1.place(x=80, y=10)
register_text1 = tkinter.Text(register_window, width=10, height=1, bg="white", fg="black", font=("宋体", 18), bd='0')
register_text1.place(x=170, y=10)

register_lable2 = tkinter.Label(register_window, text="密码:", font=('Arial', 15), width=10)
register_lable2.place(x=80, y=80)
register_text2 = tkinter.Entry(register_window, show="*", width=10, bg="white", fg="black", font=("宋体", 18), bd='0')
register_text2.place(x=170, y=80)

register_button = tkinter.Button(register_window, text="注册", command=register)
register_button.place(x=180, y=150)

登录功能实现

def open_login_window():
    # 创建游标对象
    cursor = connection.cursor()

    sql = """SELECT username, password FROM admin"""  # sql查询语句,查找admin表中username和password两个值
    cursor.execute(sql)  # 执行查询语句

    # 返回数据库查询的所有信息
    results = cursor.fetchall()
    # print(results)
    # 关闭游标
    cursor.close()
    username = text1.get("1.0", tkinter.END).strip()  # 从文本框中获取输入的账户信息
    password = text2.get().strip()  # 从文本框中获取输入的密码信息

    login_success = False
    for temp in results:
        if username == temp[0] and password == temp[1]:
            login_success = True
            break

    if login_success:
        messagebox.showinfo('成功', '登录成功')
        root.quit()
    else:
        messagebox.showinfo('Error', '账号或密码错误,请重试')

注册功能实现

def register():
    username = register_text1.get("1.0", tkinter.END).strip()
    password = register_text2.get().strip()
    if username and password:
        cursor = connection.cursor()
        sql = "INSERT INTO admin (username, password) VALUES (%s, %s)"
        cursor.execute(sql, (username, password))
        connection.commit()
        cursor.close()
        messagebox.showinfo('成功', '注册成功,请登录')
        register_window.withdraw()
        root.deiconify()
    else:
        messagebox.showinfo('Error', '账号或密码不能为空')

数据库连接

# 建立数据库连接
connection = pymysql.connect(
    host='localhost',  # 数据库主机名,一般为localhost
    port=3306,               # 数据库端口号,默认为3306
    user='root',             # 你的数据库用户名,一般为root
    passwd='database_password',         # 你的数据库密码
    db='database_name',               # 数据库名称
    charset='utf8'           # 字符编码
)

注册页面控制函数

def open_register_window():
    register_window.deiconify()
    root.withdraw()


def close_register_window():
    register_window.withdraw()
    root.deiconify()

程序运行效果

总结

在这个项目中,我们使用Python的Tkinter库和pymysql库实现了一个简单的用户登录和注册系统。在这个项目中,我们使用到了以下几个方面的知识和技能:

  • 使用Tkinter库创建图形用户界面(GUI):我们使用了Tkinter库创建窗口、标签、文本框和按钮等控件,以及如何将它们布局在界面上。

  • 与MySQL数据库进行连接和操作:我们使用了pymysql库连接到MySQL数据库,执行SQL查询和插入操作,并且将数据库中的数据与用户输入进行比对。

  • 用户登录和注册逻辑的实现:我们实现了用户登录和注册的逻辑,包括验证用户输入的账号和密码是否正确,以及在注册时将新的账号信息插入到数据库中。

  • 界面之间的切换和交互:我们在Tkinter中创建多个窗口,并且实现了从登录界面到注册界面的切换,以及注册成功后返回到登录界面的逻辑。

通过这个项目,我们掌握了基本的GUI设计和数据库操作技能,以及用户登录和注册系统的实现方法。这些知识和技能可以进一步应用到更复杂的项目中,例如开发更完整的用户管理系统、图像检索系统等。同时,我们也了解到了Tkinter和pymysql库的基本用法,为以后的项目开发打下了基础。

到此这篇关于Python+Mysql实现登录注册的文章就介绍到这了,更多相关Python Mysql实现登录注册内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python实现猜拳与猜数字游戏的方法详解

    Python实现猜拳与猜数字游戏的方法详解

    本文将为大家介绍两个用Python语言实现的小案例:猜拳游戏与数字猜猜猜小游戏,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-04-04
  • Python中的常用函数使用及说明

    Python中的常用函数使用及说明

    这篇文章主要介绍了Python中的常用函数使用及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • python使用celery实现订单超时取消

    python使用celery实现订单超时取消

    这篇文章主要为大家详细介绍了python使用celery实现订单超时取消,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-03-03
  • Python 身份验证和授权库使用详解(python jwt库)

    Python 身份验证和授权库使用详解(python jwt库)

    python_jwt是一个Python库,用于生成、解析和验证JSON Web Tokens(JWT),它完全符合JWT标准规范(RFC 7519),并提供了简单而强大的API,使得用户可以轻松地在Python应用中实现JWT功能,通过本文的介绍,深入探讨了python_jwt库的功能特性、使用方法以及应用场景
    2021-01-01
  • Pycharm配置远程SSH服务器实现(切换不同虚拟环境)

    Pycharm配置远程SSH服务器实现(切换不同虚拟环境)

    本文主要介绍了Pycharm配置远程SSH服务器实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • 用Python实现一个简单的能够上传下载的HTTP服务器

    用Python实现一个简单的能够上传下载的HTTP服务器

    这篇文章主要介绍了用Python实现一个简单的能够上传下载的HTTP服务器,是Python网络编程学习当中的基础,本文示例基于Windows操作系统实现,需要的朋友可以参考下
    2015-05-05
  • Python+OpenCV之图像梯度详解

    Python+OpenCV之图像梯度详解

    这篇文章主要为大家详细介绍了Python OpenCV中图像梯度(Sobel算子、Scharr算子和Laplacian算子)的实现,感兴趣的小伙伴可以了解一下
    2022-09-09
  • PyTorch的Debug指南

    PyTorch的Debug指南

    这篇文章主要介绍了PyTorch的Debug的相关资料,帮助大家更好的理解和学习使用PyTorch,感兴趣的朋友可以了解下
    2021-05-05
  • Django MEDIA的配置及用法详解

    Django MEDIA的配置及用法详解

    这篇文章主要介绍了Django MEDIA的配置及用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • Python 实例方法、类方法、静态方法的区别与作用

    Python 实例方法、类方法、静态方法的区别与作用

    Python中至少有三种比较常见的方法类型,即实例方法,类方法、静态方法。它们是如何定义的呢?如何调用的呢?它们又有何区别和作用呢?感兴趣的朋友跟随小编一起看看吧
    2019-08-08

最新评论