类和对象实战,利用python往MySQL数据库数据表进行一系列的增删查改

本文介绍了一个超市数据库管理系统,包括商品、会员和销售记录的增删改查功能,通过Python的pymysql模块实现与数据库的交互,支持商品信息、会员信息和销售记录的管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

class Commodity:
    def Dateopen(self):
        '连接数据库'
        import pymysql
        conn=pymysql.connect(host='localhost',port=3306,user='root',password='123456789',db='supermarket')
        cur=conn.cursor()
        self.coon=conn
        self.cur=cur
        print('连接成功!')
    def CommodityQuery(self):
        '查询商品表的信息'
        sql_query=self.cur.execute('select * from commodity' )
        info = self.cur.fetchmany(sql_query)
        for ii in info:
            print (ii)
    def CommodityInsertion(self,idd,name,price):
        '往商品表插入新的记录'
        sql_into="insert into commodity values(%s,%s,%s)"
        self.cur.executemany(sql_into,[
            (idd,name,price)])
    def CommodityUpdate(self,id1,price1):
        '根据商品ID更新商品价格'
        sql_update='update commodity set 价格=%s where 商品编号=%s'
        self.cur.executemany(sql_update,[
            (price1,id1)])
    def CommodityDel(self,id2):
        '根据商品ID删除数据'
        sql_del='delete from commodity where 商品编号=%s'
        self.cur.executemany(sql_del,[
            (id2)])
    def Detaclose(self):
        '提交事务,关闭数据库'
        self.cur.close()
        self.coon.commit()
        self.coon.close()
        print('数据库关闭!')


class VipVip:
    def Dateopen(self):
        '数据库连接'
        import pymysql
        conn=pymysql.connect(host='localhost',port=3306,user='root',password='123456789',db='supermarket')
        cur=conn.cursor()
        self.coon=conn
        self.cur=cur
        print('连接成功!')
    def VipQuery(self):
        '查询客户表的信息'
        sql_query=self.cur.execute('select * from vip' )
        info = self.cur.fetchmany(sql_query)
        for ii in info:
            print (ii)
    def VipInsertion(self,vipid,vipname,vipclass,vipdiscount):
        '#往客户表插入信息'
        sql_into="insert into vip values(%s,%s,%s,%s)"
        self.cur.executemany(sql_into,[
            (vipid,vipname,vipclass,vipdiscount)])
    def VipUpdate(self,vipid,classname,discount):
        '根据会员ID修改等级名称和折扣标准'
        sql_update='update vip set 等级名称=%s,折扣标准=%s where 会员编号=%s'
        self.cur.executemany(sql_update,[
            (classname,discount,vipid)])
    def VipDel(self,vipid):
        '根据会员ID删除会员的记录'
        sql_del='delete from vip where 会员编号=%s'
        self.cur.executemany(sql_del,[
            (vipid)])
    def Detaclose(self):
        '提交事务,关闭数据库'
        self.cur.close()
        self.coon.commit()
        self.coon.close()
        print('数据库关闭!')


class Market:
    def DateOpen(self):
        '连接数据库'
        import pymysql
        conn=pymysql.connect(host='localhost',port=3306,user='root',password='123456789',db='supermarket')
        cur=conn.cursor()
        self.coon=conn
        self.cur=cur
        print('连接成功!')
    def MarketQuery(self):
        '查看销售记录表market的全部销售记录'
        sql_query=self.cur.execute('select * from market' )
        info = self.cur.fetchmany(sql_query)
        for ii in info:
            print (ii)
    def Market(self,a,b,c,d,e,f,g):
        '分别输入销售编号、会员编号、商品编号、数量、销售总价、会员编号、商品编号、数量插入销售数据'
        sql_into="insert into  market values\
        (%s,%s,%s,%s,((select round(价格 * (select 折扣标准 \
        from vip \
        where 会员编号=%s),2)\
        from commodity where 商品编号=%s)* %s))"
        self.cur.executemany(sql_into,[
            (a,b,c,d,e,f,g)])
    def MarketDel(self,id1):
        '根据销售编号删除销售数据'
        sql_del='delete from market where 销售编号=%s'
        self.cur.executemany(sql_del,[
            (id1)])
    def MarketCone(self):
        '调用c_2存储过程,查看商品销售的总量和总价'
        self.cur.callproc('c_2')
        result=self.cur.fetchall()
        print('{}    {}    {}'.format('商品名称','销售总量','销售总价'))
        for row in result:
            name=row[0]
            num=row[1]
            price=row[2]
            print("{}        {}        {}".format(name,num,price))
        self.coon.commit()
    def GetThreadID(self,ID):
        '按会员编号查询该会员各种商品的购买总数和总价'
        sql_get=self.cur.execute('SELECT 商品名称,SUM(数量),SUM(销售总价) FROM commodity c,market m,vip v WHERE m.商品编号=c.商品编号 AND m.会员编号=v.会员编号 AND v.会员编号={d} GROUP BY c.商品名称'.format(d=ID))
        info = self.cur.fetchmany(sql_get)
        print('商品名称','  '*2,'销售总量',' '*2,'销售总价')
        for ii in info:
            print (ii)
    def DetaClose(self):
        '提交事务,关闭数据库'
        self.cur.close()
        self.coon.commit()
        self.coon.close()
        print('数据库关闭!')


def operation(type):
    print('请输入需要操作的表名称,exit退出操作')
    c=Commodity()
    v=VipVip()
    m=Market()
    if type == 'Commodity':
        print('第一步一定要先连接数据库,最后一步一定要关闭数据库提交事务,否则数据库中的数据没有得到相应的改变')
        print('1:连接数据库;2:查询商品表的信息;3:往商品表插入新的记录;4:根据商品的ID更新;5:根据商品ID删除数据;6:提交事务,关闭数据库;change:更换操作表格;exit:退出程序!')
        while True:
            snumber=input('请输入您的操作序号:')
            if snumber == 'change':
                while True:
                    x=input('请输入你接下来要操作的表名称:')
                    if x == 'Commodity':
                        return operation(x)
                    elif x == 'VipVip':
                        return operation(x)
                    elif x == 'Market':
                        return operation(x)
                    else :
                        print('没有这张表,请重新输入!!!')
            elif snumber =='exit':
                return '感谢您的本次使用!!!'
            
            n=int(snumber)
            
            if n==1:
                print('连接数据库……请等待~')
                c.Dateopen()
            elif n==2:
                print('查询商品数据成功')
                print('商品编号','商品名称','价格',sep='|')
                c.CommodityQuery()
                print('查询结束')
            elif n==3:
                print('插入商品数据!')
                ID=input('请输入商品ID:')
                name=input('请输入商品名称:')
                price=input('请输入商品价格:')
                c.CommodityInsertion(ID,name,price)
                print('插入成功,如需继续插入数据请按3')
            elif n==4:
                print('更新产品的价格')
                ID=input('请输入商品ID:')
                newprice=input('请输入新商品的价格:')
                c.CommodityUpdate(ID,newprice)
                print('更新成功,查看数据请按2')
            elif n==5:
                print('删除商品数据!!!')
                ID = input('请输入要删除商品的ID:')
                c.CommodityDel(ID)
            elif n==6:
                print('提交事务,关闭数据库!')
                c.Detaclose()    
            else:
                print('操作无效,请仔细阅读操作手册!!!')
    elif type=='VipVip':
        print('第一步一定要先连接数据库,最后一步一定要关闭数据库提交事务,否则数据库中的数据没有得到相应的改变')
        print('1:连接数据库;2:查询客户表的信息;3:往客户表插入新的记录;4:根据会员ID修改等级名称和折扣标准;5:根据会员ID删除数据;6:提交事务,关闭数据库;exit:退出程序!')
        while True:
            snumber=input('请输入您的操作序号:')
            if snumber == 'exit':
                return '感谢您的本次使用!!!'
            elif snumber =='change':
                while True:
                    x=input('请输入你接下来要操作的表名称:')
                    if x == 'Commodity':
                        return operation(x)
                    elif x == 'VipVip':
                        return operation(x)
                    elif x == 'Market':
                        return operation(x)
                    else :
                        print('没有这张表,请重新输入!!!')
            n=int(snumber)
            if n==1:
                print('连接数据库……请等待~')                  
                v.Dateopen()
            elif n==2:
                print('查询客户数据成功,数据如下:')
                print('会员编号','会员名称','等级名称','折扣标准',sep='|')
                v.VipQuery()
                print('查询结束')
            elif n==3:
                print('插入客户数据!')
                ID=input('请输入客户ID:')
                name=input('请输入客户名称:')
                vipclass=input('请输入客户会员等级#三大会员:银星会员,金星会员,玉星会员#')
                discount=input('请输入会员折扣:#0.98银星,0.95金星,0.92玉星#')
                v.VipInsertion(ID,name,vipclass,discount)
                print('插入成功!!!继续插入数据按3')
            elif n==4:
                print('根据会员ID修改等级名称和折扣标准')
                ID=input('请输入要修改的会员的ID')
                vipclass=input('请输入要修改的会员等级名称:#三大会员:银星会员,金星会员,玉星会员#')
                discount=input('请输入要修改的会员折扣:#0.98银星,0.95金星,0.92玉星#')
                v.VipUpdate(vipclass,discount,ID)
                print('客户数据修改成功!!!')
            elif n==5:
                print('根据会员ID删除会员的记录!!!')
                ID = input('请输入需要删除的会员ID:')
                v.VipDel(ID)
            elif n == 6:
                print('提交事务,关闭数据库!!!')
                v.Detaclose()
            else:
                print('操作无效,请仔细阅读操作手册!!!')
    elif type=='Market':
        print('第一步一定要先连接数据库,最后一步一定要关闭数据库提交事务,否则数据库中的数据没有得到相应的改变')
        print('1:连接数据库;2:查询销售表的信息;3:往销售表插入新的记录;4:根据销售表的销售编号删除销售数据;5:查询各种商品的销售总量和销售总价; 6:按会员编号查询该会员各种商品的购买总数和总价;7:提交事务,关闭数据库;exit:退出程序!')
        while True:
            snumber=input('请输入您的操作序号:')
            if snumber == 'exit':
                return '感谢您的本次使用!!!'
            elif snumber == 'change':
                while True:
                    x=input('请输入你接下来要操作的表名称:')
                    if x == 'Commodity':
                        return operation(x)
                    elif x == 'VipVip':
                        return operation(x)
                    elif x == 'Market':
                        return operation(x)
                    else :
                        print('没有这张表,请重新输入!!!')
            n=int(snumber)
            if n == 1:
                print('连接数据库……请等待~')
                print()
                m.DateOpen()
            elif n == 2:
                print('查询销售表的销售记录:')
                print('销售编号','会员编号','商品编号','数量','销售总价',sep='|')
                m.MarketQuery()
                print('查询完毕!!!')
            elif n == 3:
                print('往销售记录表插入新的数据:')
                mid=input('请输入销售ID:')
                vid=input('请输入会员ID:')
                shopid=input('请输入商品ID:')
                number=input('请输入销售数量')
                m.Market(mid,vid,shopid,number,vid,shopid,number)
                print('数据插入成功,如需继续插入请按3')
            elif n == 4:
                print('根据销售编号删除销售数据!!!!')
                mid=input('请输入需要删除的销售记录表的编号:')
                m.MarketDel(mid)
                print('数据成功查询,查看按2,继续按4')
            elif n == 5:
                print('各种商品的销售总量和销售总价记录如下')
                m.MarketCone()
                print('数据查询成功!!!')
            elif n == 6:
                print('按会员编号查询该会员各种商品的购买总数和总价')
                id = input('请输入要查询的会员编号')
                m.GetThreadID(id)
                print('数据查询完毕,继续查询请按6')
            elif n == 7:
                print('提交事务,关闭数据库!!')
                m.DetaClose()
            else:
                print('操作无效,请仔细阅读操作手册!!!')
    elif type == 'exit':
        return '感谢您的本次使用!!!'
    else:
        print('没有这张表,请重新输入,退出请输入exit')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值