建立购物明细表的相关增删改查操作。
构建购物清单表:
def creat_shop_list_table():
# 构造创建购物清单表sql语句
csql = '''
CREATE TABLE `shop_list` (
`shopsId` int(8) NOT NULL AUTO_INCREMENT,
`shopsCode` int(8) ,
`goodsName` varchar(20) ,
`goodsPrice` float ,
`goodsNumber` int(8) ,
`goodsAmount` float ,
PRIMARY KEY (`shopsId`))
'''
# 获取游标
c = conn.cursor()
# 如果数据表已经存在使用 execute() 方法删除表。
c.execute("DROP TABLE IF EXISTS shop_list")
c.execute(csql)
查询购物清单内容:
def select_shop_list():
# 构造sql查询语句
select = 'select * from shop_list'
# 获取游标
c = conn.cursor()
# 执行查询语句
c.execute(select)
results = c.fetchall()
# 关闭游标 关闭连接
# c.close()
# conn.close()
return results
添加购买的商品信息:
# 添加购买的商品 就是向用户购物清单的list中添加一项
def add(code):
codelist = dict()
# 获取商品条码列表
for re in goods_re:
codelist[re[0]] = re
# 没有找到对应的商品,提示条码错误
if code not in codelist:
print("条码错误,请重新输入")
return
good = codelist[code]
# 根据查找到的商品获取相关的商品信息
shopcode = good[0]
goodsname = good[1]
goodsprice = good[2]
# 等待输入数量
number = int(input("请输入商品购买数量 : \n"))
# 获取总价
goodsamount = goodsprice * number
# 将商品和购买数量封装成list后加入购物清单 未完成
add_sql = 'INSERT INTO shop_list (shopsCode, goodsName, goodsPrice, goodsNumber, goodsAmount) ' \
'VALUES (%s,%s,%s,%s,%s)'
c = conn.cursor()
c.execute(add_sql, (str(shopcode), str(goodsname), str(goodsprice), str(number), str(goodsamount)))
conn.commit()
修改:
# 修改购买的商品数量,就是修改代表用户购物清单的list列表元素
def edit(id):
# id-1 即为得到的购物明细项的索引
index = int(id) - 1
# 根据索引获取某个购物明细项
c = conn.cursor()
# 提示输入新的购买数量
number = int(input("请输入新的购买数量:\n"))
sql = 'select goodsPrice from shop_list WHERE shopsId = "' + str(index) + '"'
c.execute(sql)
price = c.fetchall()
goodsamount = price[0][0] * number
sqln =' update shop_list set goodsNumber = %s WHERE shopsId = %s'
c.execute(sqln, (number, index))
sqla = ' update shop_list set goodsAmount = %s WHERE shopsId = %s'
c.execute(sqla, (goodsamount, index))
conn.commit()
删除:
# 删除已购买的商品明细项,就是删除代表用户购物清单的list列表的元素
def delete(id):
index = int(id) - 1
# 直接根据索引项从清单中删除购物明细项
sqld = 'delete from shop_list WHERE shopsId = "' + str(index) + '"'
c = conn.cursor()
c.execute(sqld)
conn.commit()