python用模板mysql-connector设计汽车数据库,有1.不要设计类,连接数据库 2.设计一个窗体,数据库建立admin和sales表3.查询只通过salea表的序号的数据,序号为主建,不能重复,查询结果有窗口提示,查询不到显示是错误,也有错误提示
时间: 2024-03-07 20:50:40 浏览: 13
好的,我会根据您的要求来回答您的问题。
首先,您可以使用 `mysql-connector` 模块来连接 MySQL 数据库。以下是一个连接数据库的示例代码:
```python
import mysql.connector
# 连接数据库
cnx = mysql.connector.connect(user='username', password='password',
host='localhost', database='database_name')
# 关闭数据库连接
cnx.close()
```
接下来,您需要设计一个窗体来创建 `admin` 和 `sales` 表。您可以使用 Python 自带的 `tkinter` 模块来创建窗体。以下是一个创建表的示例代码:
```python
import mysql.connector
import tkinter as tk
# 连接数据库
cnx = mysql.connector.connect(user='username', password='password',
host='localhost', database='database_name')
# 创建游标对象
cursor = cnx.cursor()
# 创建 admin 表
cursor.execute("CREATE TABLE admin (id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(255), password VARCHAR(255))")
# 创建 sales 表
cursor.execute("CREATE TABLE sales (id INT AUTO_INCREMENT PRIMARY KEY, car_name VARCHAR(255), price INT, quantity INT)")
# 提交数据库变更
cnx.commit()
# 关闭游标对象和数据库连接
cursor.close()
cnx.close()
# 创建窗体
window = tk.Tk()
window.title("汽车数据库")
# 创建标签
tk.Label(window, text="查询序号:").grid(row=0, column=0)
# 创建输入框
query_entry = tk.Entry(window)
query_entry.grid(row=0, column=1)
# 创建按钮
query_button = tk.Button(window, text="查询", command=query_sales)
query_button.grid(row=0, column=2)
# 创建消息框
message = tk.Message(window, text="", width=200)
message.grid(row=1, column=0, columnspan=3)
# 查询 sales 表的函数
def query_sales():
try:
# 获取输入的序号
query_id = int(query_entry.get())
# 查询 sales 表
cursor = cnx.cursor()
query = "SELECT * FROM sales WHERE id=%s"
cursor.execute(query, (query_id,))
result = cursor.fetchone()
# 显示查询结果
if result is not None:
message.config(text="名称:%s,价格:%d,数量:%d" % (result[1], result[2], result[3]))
else:
message.config(text="查询不到该序号的数据!")
# 关闭游标对象
cursor.close()
except ValueError:
# 序号输入错误
message.config(text="请输入正确的序号!")
```
以上代码创建了一个窗体,并在窗体中添加了一个标签、一个输入框、一个按钮和一个消息框。当用户点击按钮时,程序会查询 `sales` 表中与输入序号相匹配的数据,并将查询结果显示在消息框中。如果查询不到数据或输入的序号有误,程序会在消息框中显示错误信息。
注意:为了保证程序的安全性,建议在实际开发中使用类来封装数据库操作,并使用预处理语句来防止 SQL 注入攻击。