類和對象實戰,利用python往MySQL數據庫數據表進行一系列的增刪查改

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')
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章