python点餐系统连接数据库
时间: 2023-07-25 08:47:58 浏览: 117
以下是一个简单的 Python 点餐系统连接 MySQL 数据库的示例代码,你可以根据实际需要进行修改和优化:
```python
import mysql.connector
# 建立连接
cnx = mysql.connector.connect(user='username', password='password',
host='127.0.0.1',
database='database_name')
# 创建游标
cursor = cnx.cursor()
# 执行 SQL 查询
query = "SELECT * FROM menu"
cursor.execute(query)
# 处理查询结果
menu = {}
for (item, price) in cursor:
menu[item] = price
# 初始化订单和总价
order = {}
total_price = 0
# 打印菜单
print("欢迎来到点餐系统,请查看菜单并输入相应编号点餐:")
for idx, item in enumerate(menu):
print(f"{idx + 1}、{item}({menu[item]}元)")
# 循环点餐
while True:
choice = input("请输入菜品编号(按 q 结束):")
if choice == "q":
break
try:
idx = int(choice) - 1
item = list(menu.keys())[idx]
price = menu[item]
if item in order:
order[item] += 1
else:
order[item] = 1
total_price += price
print(f"已添加 {item},当前总价为 {total_price} 元")
except:
print("输入有误,请重新输入")
# 将订单保存到数据库
for item in order:
insert_query = f"INSERT INTO orders (item, quantity, price) VALUES ('{item}', {order[item]}, {menu[item]})"
cursor.execute(insert_query)
cnx.commit()
# 打印订单
print("您的订单为:")
for item in order:
print(f"{item} x {order[item]}")
print(f"总价为 {total_price} 元,欢迎再次光临!")
# 关闭游标和连接
cursor.close()
cnx.close()
```
在该代码中,我们首先连接到了 MySQL 数据库,并从 `menu` 表中读取了菜单。然后我们初始化了订单和总价,并在循环中等待用户输入菜品编号。当用户输入菜品编号时,我们将该菜品加入订单中,并累加总价。最后我们将订单保存到 `orders` 表中,并打印订单和总价。
需要注意的是,在将订单保存到数据库时,我们使用了 `commit()` 方法将更改提交到数据库。另外,还需要根据实际情况进行一些参数配置,例如设置字符集、设置连接池等。此外,为了防止 SQL 注入攻击,我们应该使用参数化查询,而不是直接拼接 SQL 语句。
阅读全文