简单的模拟京东商城购买过程-pymysql

来源:互联网 发布:有哪些视频剪辑软件 编辑:程序博客网 时间:2024/06/05 11:54
学习python和数据分析推荐地方: www.lynda.com  

获取lynda官网会员的方式:http://item.taobao.com/item.htm?id=557746408785

from pymysql import connectclass JD(object):    """创建一个京东的服务"""    def __init__(self):        """初始化操作,数据库,类属性"""        # 创建一个SQL连接        self.conn = connect(host="localhost", port=3306,                            database="jing_dong", user="root",                            password="mysql", charset="utf8")        # 创建一个游标        self.cursor = self.conn.cursor()        self.customer_id = None    def run(self):        while True:            JD.print_menu()            option = input("输入:")            if option == "1":                self.show_all_goods()            elif option == "2":                self.log_in()                pass  # TODO 登陆            elif option == "3":                self.register()                pass # TODO 注册            elif option == "4":                self.place_order()                pass # TODO 下订单            elif option == "5":                break                pass # TODO 退出系统    def show_all_goods(self):        try:            sql = """select * from goods"""            self.cursor.execute(sql)            for item in self.cursor.fetchall():                print(item)        except Exception as E:            print("读取数据失败")    def log_in(self):        """登录操作"""        user_name = input("请输入用户名:")        password = input("请输入密码:")        sql = """select * from user_info where user_name=%s and password=%s"""        if not self.cursor.execute(sql, [user_name, password]):            print("用户名或者密码错误!")            return        user_id = self.cursor.fetchone()[0]        print("登录成功!")        # 保存本地登录状态        self.customer_id = user_id    def register(self):        user_name = input("请输入用户名:")        try:            sql = """select * from user_info where user_name=%s"""            if self.cursor.execute(sql, [user_name]):                print("该用户名已经注册!")                return            password = input("请输入密码:")            address = input("请输入地址:")            mobile = input("请输入电话:")            sql = """insert into user_info value(0, %s, %s, %s, %s)"""            self.cursor.execute(sql, [user_name, password, address, mobile])            self.conn.commit()        except Exception as e:            print("注册失败!")            self.conn.rollback()            return        else:            print("注册成功!")    def place_order(self):        customer_id = int(self.customer_id)        if self.customer_id is None:            print("请先登录账号!")            return        # 选择商品,获取商品id        self.show_all_goods()        goods_id = input("请输入您要购买的商品编号:")        sql = """select * from goods where id=%s"""        if not self.cursor.execute(sql, [goods_id]):            print("输入有误,请重试!")            print("购买失败!")            return        print("您选择的商品信息为:", self.cursor.fetchall())        try:            # 添加下单时间, 商品id到orders_list            sql = """insert into orders_list values(0, now(), %s)"""            self.cursor.execute(sql, [customer_id])            order_id = self.cursor.lastrowid            # 添加order_id, goods_id 和qty到order_detail            sql = """insert into order_detail VALUES(0, %s, %s, 1)"""            self.cursor.execute(sql, [order_id, goods_id])            # 提交sql请求            self.conn.commit()        except Exception as E:            print("购买失败!", E)            self.conn.rollback()            return        finally:            print("购买成功!")    @staticmethod    def print_menu():        menu = """        ----欢迎来到 京东商城-----        1 显示所有商品        2 登陆        3 注册        4 下订单        5 退出系统        请开始你的选择-------:        """        print(menu)    def __del__(self):        """退出程序,关灯"""        self.cursor.close()        self.conn.close()def main():    # create mall service    jd = JD()    # start service    jd.run()if __name__ == '__main__':    main()