python使用笔记14--商品管理小练习
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("退出程序!")
python使用笔记14--商品管理小练习的更多相关文章
- Linux实战教学笔记14:用户管理初级(下)
第十四节 用户管理初级(下) 标签(空格分隔): Linux实战教学笔记-陈思齐 ---更多资料点我查看 1,用户查询相关命令id,finger,users,w,who,last,lastlog,gr ...
- Linux实战教学笔记14:用户管理初级(上)
第十四节 用户管理初级(上) 标签(空格分隔): Linux实战教学笔记-陈思齐 ---更多资料点我查看 1,账号管理 1.1 管理用户命令汇总 命令 注释说明(特殊颜色的必须掌握) useradd增 ...
- Python入门笔记(14):Python的字符编码
一.字符编码中ASCII.Unicode和UTF-8的区别 点击阅读:http://www.cnblogs.com/kingstarspe/p/ASCII.html 再推荐一篇相关博文:http:// ...
- python学习笔记14(多态、封装、继承)
创建自已的对象(尤其是类型或者被称为类的对象)是python非常核心的概念. 多态: 可对不同类的对象使用同样的操作. 封装:对外部世界隐藏对象的工作细节. 继承:以普通的类为基础建立专门的类对象. ...
- Python学习笔记14—模块
在python中所有的模块都被加入到了sys.path中,用下面的方法可以看见模块的位置. >>> import sys >>> import pprint > ...
- Python学习笔记14:标准库之信号量(signal包)
signal包负责在Python程序内部处理信号.典型的操作包含预设信号处理函数,暂停并等待信号,以及定时发出SIGALRM等. 要注意,signal包主要是针对UNIX平台(比方Linux, MAC ...
- python学习笔记(14):可视化分析
一.Matplotlib 1.用于创建出版质量图表的绘图工具库 2.目的的为Python构建一个Matlab式的绘图接口 3.import matplotlib.pyplot as plt:pyplo ...
- Python使用笔记20--网络操作小练习
1 ''' 2 2.自己抓取qq群的接口,传入一个群号,然后把群成员的头像下载到本地,头像用群备注来命名,如果没有 3 群备注,那么取昵称. 4 ''' 5 import requests 6 imp ...
- python使用笔记13--清理日志小练习
1 ''' 2 写一个删除日志的程序,删除5天前或为空的日志,不包括当天的 3 1.删除5天前的日志文件 4 2.删除为空的日志文件 5 ''' 6 import os 7 import time 8 ...
随机推荐
- 十一、.net core(.NET 6)搭建ElasticSearch(ES)系列之ElasticSearch、head-master、Kibana环境搭建
搭建ElasticSearch+Kibana环境 前提条件:已经配置好JDK环境以及Nodejs环境.如果还未配置,请查看我的上一篇博客内容,有详细配置教程. 先下载ElasticSearch(以下文 ...
- Step By Step(Lua输入输出库)
Step By Step(Lua输入输出库) I/O库为文件操作提供了两种不同的模型,简单模型和完整模型.简单模型假设一个当前输入文件和一个当前输出文件,他的I/O操作均作用于这些文件.完整模型则使用 ...
- python字典转bytes类型字典
python字典转bytes类型字典import base64 import json 1. a={"Vod":{"userData":"{}&quo ...
- Selenium 库的基本用法
Selenium库的基本使用 1.基本使用 from selenium import webdriver from selenium.webdriver.common.by import By f ...
- 2021.5.22 noip模拟1
这场考试考得很烂 连暴力都没打好 只拿了25分,,,,,,,,好好总结 T1序列 A. 序列 题目描述 HZ每周一都要举行升旗仪式,国旗班会站成一整列整齐的向前行进. 郭神作为摄像师想要选取其中一段照 ...
- ICCV2019论文点评:3D Object Detect疏密度点云三维目标检测
ICCV2019论文点评:3D Object Detect疏密度点云三维目标检测 STD: Sparse-to-Dense 3D Object Detector for Point Cloud 论文链 ...
- 【译】.NET 5 中的诊断改进
基于我们在 .NET Core 3.0 中引入的诊断改进,我们一直在努力进一步改进这个领域.我很高兴介绍下一波诊断改进. 诊断工具不再需要 .NET SDK 直到最近,.NET 诊断工具套件还只能作为 ...
- SSM和SpringBoot常用注解
SpringBoot的重要注解 @SpringBootApplication 创建 SpringBoot 项目之后会默认在主类加上 我们可以把 @SpringBootApplication看作是 @C ...
- 认识5G
认识5G 一 移动通信发展历程 1移动通信技术具有代际演进规律 "G"代表一切 每10年一个周期 二 5G技术指标 流量密度:单位面积内的总流量数,是衡量移动网络在一定区域范围 ...
- 使用mockjs模拟分页请求
首先安装mockjs npm install mockjs --save-dev 创建mock.js //mock.js const Mock = require("mockjs" ...