本问题涉及到了较多的内容,下面将分步骤介绍实现方法。
1. 安装MySQL驱动程序
在Python中连接MySQL数据库,需要使用MySQL驱动程序。在命令行中输入以下命令,安装MySQL驱动程序:
```
pip install mysql-connector-python
```
2. 创建数据库
在MySQL数据库中,创建一个名为`bookstore`的数据库,用于存储书店的相关数据。
```sql
CREATE DATABASE bookstore;
```
3. 创建用户表
在`bookstore`数据库中,创建一个名为`users`的表,用于存储用户信息。
```sql
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(255) NOT NULL,
password VARCHAR(255) NOT NULL
);
```
4. 注册功能实现
用户注册功能需要实现以下几个步骤:
- 接收用户输入的用户名和密码
- 判断用户名是否已经存在,如果存在,返回错误提示;否则,将用户名和密码插入到`users`表中
- 返回注册成功提示信息
以下是实现代码:
```python
import mysql.connector
# 创建连接
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="bookstore"
)
# 创建游标
mycursor = mydb.cursor()
def register(username, password):
# 判断用户名是否已经存在
mycursor.execute("SELECT * FROM users WHERE username = %s", (username,))
result = mycursor.fetchone()
if result:
return "该用户名已经被注册"
else:
# 将用户名和密码插入到users表中
sql = "INSERT INTO users (username, password) VALUES (%s, %s)"
val = (username, password)
mycursor.execute(sql, val)
mydb.commit()
return "注册成功"
```
5. 登录功能实现
用户登录功能需要实现以下几个步骤:
- 接收用户输入的用户名和密码
- 判断用户名和密码是否匹配,如果匹配,返回登录成功提示信息;否则,返回错误提示信息
以下是实现代码:
```python
def login(username, password):
# 判断用户名和密码是否匹配
mycursor.execute("SELECT * FROM users WHERE username = %s AND password = %s", (username, password))
result = mycursor.fetchone()
if result:
return "登录成功"
else:
return "用户名或密码错误"
```
6. 创建书籍表
在`bookstore`数据库中,创建一个名为`books`的表,用于存储书籍信息。
```sql
CREATE TABLE books (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
price DECIMAL(10, 2) NOT NULL
);
```
7. 购买功能实现
用户购买功能需要实现以下几个步骤:
- 查询所有书籍信息并展示给用户
- 接收用户输入的书籍编号和购买数量
- 判断库存是否充足,如果充足,计算总价并将购买记录插入到`orders`表中;否则,返回错误提示信息
以下是实现代码:
```python
# 创建书籍表
mycursor.execute("CREATE TABLE books (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, price DECIMAL(10, 2) NOT NULL)")
# 插入书籍信息
sql = "INSERT INTO books (name, price) VALUES (%s, %s)"
val = [
('Python编程从入门到实践', 59.99),
('流畅的Python', 79.99),
('Python核心编程', 89.99),
('Python网络爬虫实战', 69.99)
]
mycursor.executemany(sql, val)
mydb.commit()
def buy(username, book_id, quantity):
# 查询书籍信息
mycursor.execute("SELECT * FROM books WHERE id = %s", (book_id,))
book = mycursor.fetchone()
if not book:
return "该书籍不存在"
if book[2] < quantity:
return "库存不足"
# 计算总价
total_price = book[2] * quantity
# 将购买记录插入到orders表中
sql = "INSERT INTO orders (username, book_id, quantity, total_price) VALUES (%s, %s, %s, %s)"
val = (username, book_id, quantity, total_price)
mycursor.execute(sql, val)
mydb.commit()
return "购买成功"
```
8. 创建购物车表
在`bookstore`数据库中,创建一个名为`cart`的表,用于存储购物车信息。
```sql
CREATE TABLE cart (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(255) NOT NULL,
book_id INT NOT NULL,
quantity INT NOT NULL,
FOREIGN KEY (username) REFERENCES users (username),
FOREIGN KEY (book_id) REFERENCES books (id)
);
```
9. 购物车功能实现
用户购物车功能需要实现以下几个步骤:
- 查询用户购物车中的所有书籍信息并展示给用户
- 接收用户输入的书籍编号和购买数量
- 判断库存是否充足,如果充足,将购买记录插入到`cart`表中;否则,返回错误提示信息
以下是实现代码:
```python
def add_to_cart(username, book_id, quantity):
# 查询书籍信息
mycursor.execute("SELECT * FROM books WHERE id = %s", (book_id,))
book = mycursor.fetchone()
if not book:
return "该书籍不存在"
if book[2] < quantity:
return "库存不足"
# 将购买记录插入到cart表中
sql = "INSERT INTO cart (username, book_id, quantity) VALUES (%s, %s, %s)"
val = (username, book_id, quantity)
mycursor.execute(sql, val)
mydb.commit()
return "已加入购物车"
def show_cart(username):
# 查询购物车信息
mycursor.execute("SELECT books.name, cart.quantity, books.price FROM cart JOIN books ON cart.book_id=books.id WHERE username=%s", (username,))
result = mycursor.fetchall()
if not result:
return "购物车为空"
# 输出购物车信息
total_price = 0
for row in result:
print(row[0], 'x', row[1], '=', row[2] * row[1])
total_price += row[2] * row[1]
print("总价:", total_price)
```
以上是Python连接数据库MySQL建立网上书店实现用户注册登录,购买,购物车的步骤和代码。