1 import json
2 import pymysql
3 IP = '127.0.0.1'
4 PORT = 3306
5 USER_NAME = 'root'
6 PASSWORD = '123456'
7 DB = 'db001'
8 def connect_mysql():#创建mysql连接
9 connect = pymysql.connect(host=IP,
10 port=PORT,
11 user=USER_NAME,
12 password=PASSWORD,
13 db=DB,
14 charset='utf8',
15 autocommit=True
16 )
17 return connect
18
19 def select_all_products(pro_name=None):#查询数据,商品名称为空,查询所有数据;商品名称不为空,查询指定商品数据
20 connect = connect_mysql()
21 cur = connect.cursor(pymysql.cursors.DictCursor)#建立游标
22 select_sql = "select * from tb_product "
23 if pro_name:
24 select_sql += "where pro_name = '%s' ;"%pro_name
25 else:
26 select_sql += ";"
27 cur.execute(select_sql)
28 result = cur.fetchall()
29 cur.close()
30 connect.close()
31 return result
32
33
34 def insert_product(pro_name,price,count,color):#新增商品信息
35 connect = connect_mysql()
36 cur = connect.cursor(pymysql.cursors.DictCursor) # 建立游标
37 insert_sql = "insert into tb_product(pro_name,price,count,color) VALUES ('%s',%f,%d,'%s') ;"\
38 %(pro_name,price,count,color)
39 print(insert_sql)
40 cur.execute(insert_sql)
41 result = cur.fetchall()
42 cur.close()
43 connect.close()
44
45 def update_product(pro_name,price,count,color):#修改商品信息
46 connect = connect_mysql()
47 cur = connect.cursor(pymysql.cursors.DictCursor) # 建立游标
48 update_sql = "update tb_product set price = %f , count = %d, color = '%s' where pro_name ='%s' ;" \
49 % (price, count, color, pro_name)
50 print(update_sql)
51 cur.execute(update_sql)
52 result = cur.fetchall()
53 cur.close()
54 connect.close()
55
56 def delete_product(pro_name):#删除商品信息
57 connect = connect_mysql()
58 cur = connect.cursor(pymysql.cursors.DictCursor) # 建立游标
59 delete_sql = "DELETE FROM tb_product where pro_name = '%s' ;"%pro_name
60 print(delete_sql)
61 cur.execute(delete_sql)
62 result = cur.fetchall()
63 cur.close()
64 connect.close()
65
66 def get_product_name():
67 for i in range(3):
68 name = input("请输入商品名称:").strip()
69 if name:
70 return name
71 else:
72 print('商品名称不能为空')
73 else:
74 quit("错误次数过多")
75
76 def show():
77 name = get_product_name()
78 if name == 'all':
79 print(select_all_products())
80 elif select_all_products(name):
81 print("商品信息是%s"%select_all_products(name))
82 else:
83 print('商品不存在!')
84
85 def delete():
86 name = get_product_name()
87 if select_all_products(name):
88 delete_product(name)
89 print("商品已经被删除")
90 else:
91 print('商品不存在!')
92
93 def check_count(count:str):
94 if count.isdigit():
95 if int(count)>0:
96 return int(count) #1
97 #None
98
99 def check_price(price:str):
100 count = check_count(price)
101 if count:
102 return count
103 else:
104 if price.count('.')==1 and price.replace('.','').isdigit():
105 return float(price) if float(price)>0 else None
106
107 def add():
108 name = get_product_name()
109 if select_all_products(name):
110 print('无法添加')
111 else:
112 price, count, color = input_product()
113 if price and count and color:
114 insert_product(name, price, count, color)
115 print("添加成功!")
116 else:
117 print("价格/数量/颜色不合法")
118
119
120 def modify():
121 name = get_product_name()
122 if select_all_products(name): # 商品存在可以修改
123 price, count, color = input_product()
124 if price and count and color:
125 update_product(name, price, count, color)
126 print("修改成功!")
127 else:
128 print("价格/数量/颜色不合法")
129 else:
130 print('商品不存在!')
131
132
133 def input_product():
134 price = input("price:").strip()
135 count = input("count:").strip()
136 color = input("color:").strip()
137 price = check_price(price)
138 count = check_count(count)
139 return price,count,color
140
141
142 choice = input("请输入:1、添加2、修改、3、查看4、删除、other、退出:").strip()
143 func_map = {'1':add,'2':modify,'3':show,'4':delete}
144 if choice in func_map:
145 func_map.get(choice)()
146 else:
147 quit("退出程序!")