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

 
 
学习python和数据分析推荐地方: www.lynda.com  

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

from pymysql import connect



class 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()



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值