美文网首页python的基础以及提高
Python day27_mysql与Python交互

Python day27_mysql与Python交互

作者: g_s_007 | 来源:发表于2018-06-04 22:21 被阅读0次

    jingdong用户登录注册查询功能的实现

    准备数据

    创建数据表格

    -- 创建 "jingdong" 数据库
    create database jing_dong charset=utf8;
    
    -- 使用 "jingdong" 数据库
    use jing_dong;
    
    -- 创建一个商品goods数据表
    create table goods(
        id int unsigned primary key auto_increment not null,
        name varchar(150) not null,
        cate_name varchar(40) not null,
        brand_name varchar(40) not null,
        price decimal(10,3) not null default 0,
        is_show bit not null default 1,
        is_saleoff bit not null default 0
    );
    

    插入数据

    -- 向goods表中插入数据
    
    insert into goods values(0,'r510vc 15.6英寸笔记本','笔记本','华硕','3399',default,default); 
    insert into goods values(0,'y400n 14.0英寸笔记本电脑','笔记本','联想','4999',default,default);
    insert into goods values(0,'g150th 15.6英寸游戏本','游戏本','雷神','8499',default,default); 
    insert into goods values(0,'x550cc 15.6英寸笔记本','笔记本','华硕','2799',default,default); 
    insert into goods values(0,'x240 超极本','超级本','联想','4880',default,default); 
    insert into goods values(0,'u330p 13.3英寸超极本','超级本','联想','4299',default,default); 
    insert into goods values(0,'svp13226scb 触控超极本','超级本','索尼','7999',default,default); 
    insert into goods values(0,'ipad mini 7.9英寸平板电脑','平板电脑','苹果','1998',default,default);
    insert into goods values(0,'ipad air 9.7英寸平板电脑','平板电脑','苹果','3388',default,default); 
    insert into goods values(0,'ipad mini 配备 retina 显示屏','平板电脑','苹果','2788',default,default); 
    insert into goods values(0,'ideacentre c340 20英寸一体电脑 ','台式机','联想','3499',default,default); 
    insert into goods values(0,'vostro 3800-r1206 台式电脑','台式机','戴尔','2899',default,default); 
    insert into goods values(0,'imac me086ch/a 21.5英寸一体电脑','台式机','苹果','9188',default,default); 
    insert into goods values(0,'at7-7414lp 台式电脑 linux )','台式机','宏碁','3699',default,default); 
    insert into goods values(0,'z220sff f4f06pa工作站','服务器/工作站','惠普','4288',default,default); 
    insert into goods values(0,'poweredge ii服务器','服务器/工作站','戴尔','5388',default,default); 
    insert into goods values(0,'mac pro专业级台式电脑','服务器/工作站','苹果','28888',default,default); 
    insert into goods values(0,'hmz-t3w 头戴显示设备','笔记本配件','索尼','6999',default,default); 
    insert into goods values(0,'商务双肩背包','笔记本配件','索尼','99',default,default); 
    insert into goods values(0,'x3250 m4机架式服务器','服务器/工作站','ibm','6888',default,default); 
    insert into goods values(0,'商务双肩背包','笔记本配件','索尼','99',default,default);
    

    操作要求

    """-- 表结构说明
        1.jingdong商品表 goods
            -- 表结构和之前一样
        2.jingdong用户表 users   自己创建用户表
            -- id  用户名(字符串)  密码(字符串)
    
    -- 操作流程及功能要求
        1. 用户注册
            1.1 用户名在数据库中唯一,用户在注册的时候需要校验用户名在数据库中是否存在,并做相应提示
            1.2 用户名和密码长度6-12位之间(除了长度限制自己可以扩展其他的,如:用户名指定组成等)
            1.3 用户密码输入两次并校验两次密码是否一致
        2. 用户登陆
            2.1 账号密码通过用户表校验是否正确
            2.2 登陆失败or成功做对应的提示
        3. 用户操作jingdong商品表
            3.1 登陆成功以后才可以操作goods表
            3.2 对商品表进行增删改查
    """
    

    根据要求写代码

    面向函数编程
    import re
    from pymysql import connect
    
    # 定义一个用户信息类
    class Userdata(object):
        def __init__(self):
            # 连接数据库
            self.conn = connect(host='localhost', port=3306, user='root', password='mysql', database='jing_dong', charset='utf8')
            # 获取游标对象
            self.cs1 = self.conn.cursor()
    
        def __enter__(self):
            return self.cs1,self.conn
    
        def __exit__(self,*args):
            # 关闭
            self.cs1.close()
            self.conn.close()
    
    
    def register():
        """注册系统"""
        with Userdata() as (cs1,conn):
            # 执行sql 语句
            sql = """select name from users;"""
            cs1.execute(sql)
            # 获取用户信息
            user_info = cs1.fetchall()
        while True:
            user_name = input("请输入注册名6-12:")
            match = re.match(r'[0-9a-zA-Z]{6,12}',user_name)
            if match:
                if (user_name,) not in user_info:
                    pwd1 = input("请输入注册密码:")
                    pwd2 = input("请再次输入:")
                    if pwd1 == pwd2:
                        with Userdata() as (cs1,conn):
                            sql = """insert into users(name,password) values(%s,%s);"""
                            cs1.execute(sql,(user_name,pwd1))
                            conn.commit()
                        print("注册成功!")
                        break
                    else:
                        print("密码确认错误 请重新输入")
                        continue
                else:
                    print("这个名字已经被注册过啦,请换一个")
                    continue
            else:
                print("用户名必须在6-12位,请重新输入")
                continue
    
    
    def find_info():
        """查询"""
        with Userdata() as (cs1,conn):
            # 执行sql语句
            sql = """select * from goods;"""
            cs1.execute(sql)
            info = cs1.fetchall()
        # 打印数据
        for tmp in info:
            print(tmp)
    
    
    def add_info():
        """增加商品种类"""
        cate_name = input("请输入要增加的商品种类名:")
        with Userdata() as (cs1,conn):
            # 执行sql 语句
            sql = """insert into good_cates(name) values(%s);"""
            cs1.execute(sql,(cate_name,))
            conn.commit()
            cate_info =cs1.fetchall()
    
    
    def modify_info():
        """查询并修改商品品牌"""
        with Userdata() as (cs1,conn):
            # 执行sql语句
            sql = """select * from good_brands;"""
            cs1.execute(sql)
            brand_info = cs1.fetchall()
        for tmp in brand_info:
            print(tmp)
        brand_id = input("请输入你想修改的品牌id")
        brand_name = input("请输入你想修改成什么:")
        with Userdata() as (cs1,conn):
            # 执行sql语句
            sql = """update good_brands set name = %s where id= %s;"""
            cs1.execute(sql,(brand_name,brand_id))
            conn.commit()
    
    
    def delete_info():
        """删除商品信息"""
        delete_name = input("请输入你想删除的商品名字:")
        with Userdata() as (cs1,conn):
            # 执行sql语句
            sql = """delete from goods where name =%s"""
            cs1.execute(sql,(delete_name,))
            conn.commit()
    
    
    def operate():
        """对jingdong商品表进行增删改查"""
        print("1>查询商品信息")
        print("2>增加商品种类")
        print("3>修改商品品牌")
        print("4>删除商品信息")
        print("0>退出")
        while True:
            cmd = input("请输入要执行的操作指令")
            if cmd == "1":
                find_info()
            elif cmd =="2":
                add_info()
            elif cmd =='3':
                modify_info()
            elif cmd =='4':
                delete_info()
            elif cmd =='0':
                print("期待亲再次光临~")
                break
    
    
    
    
    def login():
        """登陆系统"""
        with Userdata() as (cs1,conn):
            # 执行sql语句
            sql = """select name,password from users;"""
            cs1.execute(sql)
            user_table = cs1.fetchall()
        while True:
            user_name = input("请输入用户名:")
            pwd = input("请输入密码:")
            if (user_name,pwd) not in user_table:
                print("用户不存在或者密码输入错误 请重试")
                continue
            else:
                print("登陆成功!")
                print("进入主页~")
                operate()
                break
    
    
    
    
    
    def main():
        """用户注册登陆操作系统"""
        print("欢迎进入jing_dong购物界面")
        print("注册请输入1")
        print("登陆请输入2")
        while True:
            cmd = input("请输入:")
            if cmd == '1':
                # 用户注册
                register()
            if cmd == '2':
                # 用户登陆
                login()
    
    if __name__ == '__main__':
        main()

    相关文章

      网友评论

        本文标题:Python day27_mysql与Python交互

        本文链接:https://www.haomeiwen.com/subject/erlusftx.html