zoukankan      html  css  js  c++  java
  • 5.9---python连接数据库实现登录注册

    使用python连接数据库,实现账号登录与注册功能

    import pymysql
    
    # MySQL语句 插入数据行,即注册行为
    register_sql = 'insert into user(name,password) values(%s,%s)'
    # MySQL语句 查看name=username的数据行 判断是否已存在该用户
    check_sql = 'select name from user where BINARY name =%s ' # 加入BINARY关键字,可使查询结果区分大小写
    # check_sql = 'select name from user where name =%s '  # 这种查询无法区分大小写
    
    # MySQL语句 查看所有符合该账号与密码的用户  若无则有误,若有则输出登录成功
    login_sql = 'select * from user where name=%s and password=%s'
    
    # 连接数据库函数
    def MySQL_conn():
        conn = pymysql.connect(
            host = "127.0.0.1",
            port = 3306,
            user = "root",
            password = "123",
            database = "day48",
            charset = "utf8",
            autocommit = True
        )   # 连接数据库
    
        # 以字典形式输出数据  不设置则默认为元组类型输出
        cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
        return cursor
    
    # 登录函数
    def login(cursor):
        while True:
            username = input("请输入用户名:").strip()
            if username.lower == "q":
                return
            password = input("请输入密码:").strip()
    
            res = cursor.execute(login_sql,(username,password))    # 返回值为数据行数,或字典键值对个数
            if res:
                print("登陆成功!")
                print('数据行数:',res)          # 2
                print(cursor.fetchall())        # [{'id': 1, 'name': 'Jil', 'password': '1118'}, {'id': 3, 'name': 'Jil', 'password': '1118'}]
                cursor.scroll(-1,"relative")    # 相对于光标所在的位置继续往前移动1位
                print(cursor.fetchall())        # 光标位置取到取到最后  [{'id': 3, 'name': 'Jil', 'password': '1118'}]
                return
            else:
                print("用户名或密码错误!")
    
    # 注册函数
    def register(cursor):
        while True:
            username = input("注册用户名:").strip()
            if username.lower == "q":
                return
            password = input("设定密码:").strip()
            re_password = input("确认密码:").strip()
    
            if password != re_password:
                print("两次密码输入不一致,请重新输入!")
                continue
            res = cursor.execute(check_sql,(username))
            # print(res)
            # print(cursor.fetchall())
            if res:
                print("用户名【%s】已存在,请重新输入!"%username)
                continue
            else:
                cursor.execute(register_sql,(username,password))
                print("注册成功!")
                return
    
    
    if __name__ == '__main__':
        cursor = MySQL_conn()
        while True:
            print("登录或注册".center(50,"="))
            print('''1、登录
    2、注册''')
            cmd = input("请输入您需要的操作数:").strip()
            if cmd not in ["1","2",'q']:
                print("请输入正确指令!")
            if cmd == '1':
                login(cursor)
            elif cmd == '2':
                register(cursor)
            else:
                break
    
  • 相关阅读:
    默认组件加载类
    加密工具类
    客户端安全传输密码至服务端的实现改进
    开发Angular库的简单指导(译)
    Windows中搭建Redis集群
    Mybatis中SqlMapper配置的扩展与应用(3)
    Mybatis中SqlMapper配置的扩展与应用(2)
    Mybatis中SqlMapper配置的扩展与应用(1)
    优化与扩展Mybatis的SqlMapper解析
    使用XSD校验Mybatis的SqlMapper配置文件(2)
  • 原文地址:https://www.cnblogs.com/zhubincheng/p/12868843.html
Copyright © 2011-2022 走看看