完整的实现连接数据库的python登录注册界面的具体代码和每行代码作用
时间: 2023-09-30 21:08:41 浏览: 98
好的,下面是一个简单的 Python 登录注册界面与 MySQL 数据库连接的实现代码,包括登录、注册、连接数据库等功能。
首先,需要安装 `mysql-connector-python` 模块,用于连接 MySQL 数据库。可以使用 `pip` 命令进行安装:
```bash
pip install mysql-connector-python
```
接下来,我们需要导入必要的模块和库:
```python
from tkinter import *
import mysql.connector
from mysql.connector import Error
```
然后,我们需要连接到 MySQL 数据库。在这个例子中,我们使用 `try-except` 语句来处理连接数据库时可能发生的错误:
```python
try:
connection = mysql.connector.connect(host='localhost',
database='mydatabase',
user='myusername',
password='mypassword')
if connection.is_connected():
db_Info = connection.get_server_info()
print("Connected to MySQL Server version ", db_Info)
cursor = connection.cursor()
cursor.execute("select database();")
record = cursor.fetchone()
print("You're connected to database: ", record)
except Error as e:
print("Error while connecting to MySQL", e)
finally:
if (connection.is_connected()):
cursor.close()
connection.close()
print("MySQL connection is closed")
```
在这段代码中,我们连接到本地 MySQL 数据库,并打印出连接成功的信息。如果连接失败,我们会打印出错误信息。在 `finally` 语句中,我们关闭了连接。
接下来,我们创建一个简单的 GUI 界面,包含登录和注册的选项卡:
```python
root = Tk()
root.title("Login/Register")
root.geometry("400x250")
tab_control = ttk.Notebook(root)
login_tab = ttk.Frame(tab_control)
register_tab = ttk.Frame(tab_control)
tab_control.add(login_tab, text='Login')
tab_control.add(register_tab, text='Register')
tab_control.pack(expand=1, fill="both")
```
在登录选项卡中,我们创建了一个标签和两个输入框,用于输入用户名和密码:
```python
login_label = Label(login_tab, text="Please enter your username and password")
login_label.pack(pady=10)
login_frame = Frame(login_tab)
login_frame.pack(pady=10)
username_label = Label(login_frame, text="Username: ")
username_label.grid(row=0, column=0, padx=5, pady=5)
username_entry = Entry(login_frame)
username_entry.grid(row=0, column=1, padx=5, pady=5)
password_label = Label(login_frame, text="Password: ")
password_label.grid(row=1, column=0, padx=5, pady=5)
password_entry = Entry(login_frame, show="*")
password_entry.grid(row=1, column=1, padx=5, pady=5)
```
在注册选项卡中,我们创建了一个标签和三个输入框,用于输入用户名、密码和电子邮件地址:
```python
register_label = Label(register_tab, text="Please enter your information below")
register_label.pack(pady=10)
register_frame = Frame(register_tab)
register_frame.pack(pady=10)
username_label = Label(register_frame, text="Username: ")
username_label.grid(row=0, column=0, padx=5, pady=5)
username_entry = Entry(register_frame)
username_entry.grid(row=0, column=1, padx=5, pady=5)
password_label = Label(register_frame, text="Password: ")
password_label.grid(row=1, column=0, padx=5, pady=5)
password_entry = Entry(register_frame, show="*")
password_entry.grid(row=1, column=1, padx=5, pady=5)
email_label = Label(register_frame, text="Email: ")
email_label.grid(row=2, column=0, padx=5, pady=5)
email_entry = Entry(register_frame)
email_entry.grid(row=2, column=1, padx=5, pady=5)
```
接下来,我们需要创建一个函数来处理登录功能。在这个例子中,我们使用了预处理语句来查询数据库,以防止 SQL 注入攻击:
```python
def login():
username = username_entry.get()
password = password_entry.get()
try:
connection = mysql.connector.connect(host='localhost',
database='mydatabase',
user='myusername',
password='mypassword')
cursor = connection.cursor(prepared=True)
sql_select_query = """SELECT * FROM users WHERE username = %s and password = %s"""
cursor.execute(sql_select_query, (username, password))
record = cursor.fetchone()
if record is not None:
print("Login successful")
else:
print("Invalid username or password")
except Error as e:
print("Error reading data from MySQL table", e)
finally:
if (connection.is_connected()):
cursor.close()
connection.close()
print("MySQL connection is closed")
```
在这个函数中,我们从输入框中获取了用户名和密码,然后查询数据库,看是否有匹配的记录。如果有,我们打印出登录成功的信息,否则打印出无效的用户名或密码。
最后,我们需要创建一个函数来处理注册功能。在这个例子中,我们使用了预处理语句来插入数据,以防止 SQL 注入攻击:
```python
def register():
username = username_entry.get()
password = password_entry.get()
email = email_entry.get()
try:
connection = mysql.connector.connect(host='localhost',
database='mydatabase',
user='myusername',
password='mypassword')
cursor = connection.cursor(prepared=True)
sql_insert_query = """INSERT INTO users (username, password, email) VALUES (%s,%s,%s)"""
insert_tuple = (username, password, email)
result = cursor.execute(sql_insert_query, insert_tuple)
connection.commit()
print("Record inserted successfully into users table")
except Error as e:
print("Error inserting data into MySQL table", e)
finally:
if (connection.is_connected()):
cursor.close()
connection.close()
print("MySQL connection is closed")
```
在这个函数中,我们从输入框中获取了用户名、密码和电子邮件地址,然后将它们插入到数据库中。如果插入成功,我们打印出记录插入成功的信息,否则打印出错误信息。
最后,我们需要创建两个按钮,一个用于登录,一个用于注册,并将它们绑定到相应的函数:
```python
login_button = Button(login_tab, text="Login", command=login)
login_button.pack(pady=10)
register_button = Button(register_tab, text="Register", command=register)
register_button.pack(pady=10)
```
以上就是一个简单的 Python 登录注册界面与 MySQL 数据库连接的实现代码。