python 模块化应用案例

文章知识点:

1.python中,同样的功能,可封装为工具,重复利用

2.功能模块化编程

实际案例:顾客管理

程序需要实现以下顾客管理功能,数据读取和写入到mysql中

以此为例子,从数据库读取修改顾客信息,会反复链接数据库,获取游标,关闭游标,关闭链接,这一块可变为一个功能closecon(),在调用中使用

class DBUtil:
    # 数据库配置为类属性
    config = {'host': 'localhost', 'database': 'test', 'port': 3306, 'user': 'root', 'passwd': 'root',
              'charset': 'utf8'}

    # 获取一个和数据库交互的工具cursor
    def __init__(self):
        '''创建数据库连接和coursor'''
        self.con = pymysql.connect(**DBUtil.config)
        self.cursor = self.con.cursor()

    def closecon(self):
        '''关闭coursor和数据库连接'''
        self.cursor.close()
        self.con.close()

    def exec_dml(self, sql, *args):
        '''执行DML语句'''
        try:
            self.cursor.execute(sql, args)  # 使用executemany同事执行多条数据
            self.con.commit()
            #result = self.cursor.fetchall()
        except BaseException as errorm:  # 抛出错误原因
            # 如果发生错误则回滚
            self.con.rollback()
            print("error:", errorm)
        finally:
            self.closecon()

    def query_all(self, sql, *args):
        '''查找数据'''
        try:
            self.cursor.execute(sql, args)  # 使用executemany同事执行多条数据
            result = self.cursor.fetchall()
            for i in result:
                print('顾客名字:{0},邮箱:{1},生日:{2}'.format(i[0],i[1],i[2]))
        except BaseException as errorm:  # 抛出错误原因
            # 如果发生错误则回滚
            self.con.rollback()
            print("error:", errorm)
        finally:
            self.closecon()

顾客管理支持新增顾客,删除和查询等,将功能模块化,分功能调用。并且在新增、删除、修改等DML操作,使用class DBUtil中的exec_dml()同一个方法


class CustomerManagment:
    def __int__(self, username, email, birthdate):
        self.username = username
        self.email = email
        self.birthdate = birthdate

    def menu(self):
        print('--' * 40)
        print('     顾客管理 v1.0')
        print('1.添加顾客信息')
        print('2.删除顾客信息')
        print('3.修改顾客信息')
        print('4.查询顾客信息')
        print('5.遍历所有顾客信息')
        print('6.退出系统')
        print('--' * 40)

    def add_cus(self):
        '''1.添加顾客信息'''
        # 定义客户字典
        cusdic = {}
        cusdic['username'] = input('请输入顾客名称:')
        cusdic['emai'] = input('请输入顾客邮箱:')
        cusdic['birthdate'] = input('请输入顾客生日:')
        values = []
        for i in cusdic.values():
            values.append(i)
        sql = '''insert into d_customer(username,email,birthdate) values('%s','%s','%s');''' % (values[0], values[1], values[2])
        return sql
        print('添加的顾客名字:{0},邮箱:{1},生日:{2}'.format(values[0], values[1], values[2]))

    def del_cus(self):
        '''2.删除顾客信息'''
        pass

    def alter_cus(self):
        '''3.修改顾客信息'''
        pass

    def select_cus(self):
        '''4.查询顾客信息'''
        pass

    def showall_cus(self):
        '''5.遍历所有顾客信息'''
        sql = 'select username,email,birthdate from d_customer limit 10000;'
        return sql

主程序调用,演示插入和查询功能,中间234同理

if __name__ == '__main__':
    while True:
        DB=DBUtil()
        Customerobj=CustomerManagment()
        Customerobj.menu()
        funcno = int(input('请输入你要执行的功能:'))
        if funcno == 1:
            sql=Customerobj.add_cus()
            DB.exec_dml(sql)
        elif funcno == 2:
            pass
        elif funcno == 3:
            pass
        elif funcno == 4:
            pass
        elif funcno == 5:
            sql=Customerobj.showall_cus()
            DB.query_all(sql)
        elif funcno == 6:
            print('系统退出成功,欢迎下次使用')
            break
        else:
            print('输入编号有误,请重新输入')

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值