Python + Tkinter 连接本地 MySQL 数据库简单实现注册登录的步骤如下:
1.安装必要的软件
在本地计算机上安装 MySQL 数据库,并安装 Python 包管理器 pip。
2.使用pip安装需要的包
打开终端或命令行窗口,使用 pip 安装以下必要的 Python 包:
- mysql-connector-python:用于连接 MySQL 数据库
- bcrypt:用于密码的哈希和字符串的比较
- tkinter:用于创建简单的 GUI 界面
安装方法为:在终端或命令行窗口中使用以下命令安装:
pip install mysql-connector-python bcrypt tkinter
3.创建数据库和表格
使用 MySQL Workbench 创建名为 "users" 的数据库,并在其中创建 "accounts" 表格,用于存储用户的用户名和哈希密码。
表格应该有以下两个列:
- username varchar(255) PRIMARY KEY
- password varchar(255)
密码列应该使用 VARCHAR 255 数据类型,以便存储哈希密码。
4.编写 Python 代码
使用 Python 编写代码,连接到本地 MySQL 数据库,并创建 Tkinter 窗口,实现注册和登录功能。
示例代码 1:注册功能
from tkinter import *
import mysql.connector
import bcrypt
# 创建Tkinter窗口
root = Tk()
root.title("Registration Form")
# 连接到MySQL数据库
mydb = mysql.connector.connect(
host="localhost",
user="root",
password="password",
database="users"
)
# 创建账户表
mycursor = mydb.cursor()
mycursor.execute("CREATE TABLE IF NOT EXISTS accounts (username VARCHAR(255) PRIMARY KEY, password VARCHAR(255))")
# 处理表单提交
def submit():
# 获取表单提交数据
username = username_entry.get()
password = password_entry.get()
# 将密码哈希
hashed_password = bcrypt.hashpw(password.encode('utf-8'), bcrypt.gensalt())
# 将用户名和哈希密码插入到账户表
sql = "INSERT INTO accounts (username, password) VALUES (%s, %s)"
val = (username, hashed_password)
mycursor.execute(sql, val)
mydb.commit()
# 显示注册成功信息
message_label.config(text="Registration Success")
# 创建表单元素
username_label = Label(root, text="Username:")
username_label.grid(row=0, column=0)
username_entry = Entry(root)
username_entry.grid(row=0, column=1)
password_label = Label(root, text="Password:")
password_label.grid(row=1, column=0)
password_entry = Entry(root, show="*")
password_entry.grid(row=1, column=1)
submit_button = Button(root, text="Submit", command=submit)
submit_button.grid(row=2, column=1)
message_label = Label(root, text="")
message_label.grid(row=3, columnspan=2)
root.mainloop()
示例代码 2:登录功能
from tkinter import *
import mysql.connector
import bcrypt
# 创建Tkinter窗口
root = Tk()
root.title("Login Form")
# 连接到MySQL数据库
mydb = mysql.connector.connect(
host="localhost",
user="root",
password="password",
database="users"
)
# 处理表单提交
def submit():
# 获取表单提交数据
username = username_entry.get()
password = password_entry.get()
# 查询数据库中存储的哈希密码
mycursor = mydb.cursor()
sql = "SELECT password FROM accounts WHERE username = %s"
val = (username,)
mycursor.execute(sql, val)
result = mycursor.fetchone()
# 如果用户存在且密码正确
if result is not None and bcrypt.checkpw(password.encode('utf-8'), result[0].encode('utf-8')):
message_label.config(text="Login Success")
else:
message_label.config(text="Login Failed")
# 创建表单元素
username_label = Label(root, text="Username:")
username_label.grid(row=0, column=0)
username_entry = Entry(root)
username_entry.grid(row=0, column=1)
password_label = Label(root, text="Password:")
password_label.grid(row=1, column=0)
password_entry = Entry(root, show="*")
password_entry.grid(row=1, column=1)
submit_button = Button(root, text="Submit", command=submit)
submit_button.grid(row=2, column=1)
message_label = Label(root, text="")
message_label.grid(row=3, columnspan=2)
root.mainloop()
以上是 Python + Tkinter 连接本地 MySQL 数据库简单实现注册登录的详细攻略,如有不清楚之处可以随时提问。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python + Tkinter连接本地MySQL数据库简单实现注册登录 - Python技术站