美文网首页
为登陆逻辑添加mongo的存储

为登陆逻辑添加mongo的存储

作者: ZJXianG | 来源:发表于2018-05-23 08:50 被阅读0次
    图片3.png 图片4.png 图片5.png

    coding = utf-8

    导入pymysql

    from pymysql import *

    导入加密包

    from hashlib import *

    导入pymong

    from pymongo import *

    定义一个conn

    conn = None

    cur = None

    注册

    def register():
    # 添加异常
    try:
    conn = mysql_conn()
    # 游标
    cur = conn.cursor()
    select_params = [username]
    select_sql = 'select * from py_users where uname = %s'
    # execute(sql文件,[params参数])
    cur.execute(select_sql,select_params)
    ret = cur.fetchone()
    # print(ret)
    # 判断ret返回的值,如果返回的不是None,则证明注册失败
    if ret is not None:
    print('用户名已存在')
    return
    #如果返回的是None,则证明用户名没有被注册,进行下一步
    #插入数据到数据库
    insert_params = [username,sha_pwd]
    insert_sql = 'insert into py_users values (0,%s,%s,0)'
    count = cur.execute(insert_sql,insert_params)
    #count 返回的是受影响的行,如果返回的是0,证明没有插入成功
    if count == 0:
    print('注册失败')
    else:
    print('注册成功')
    # 关闭事务
    conn.commit()
    except Exception as ex:
    print(ex)
    finally:
    close(conn,cur)

    登陆

    def login():
    # 添加异常
    try:
    conn = mysql_conn()
    cur = conn.cursor()
    parmas = [username]
    # 因为后面要判断密码,所有最好查找upwd,便于判断
    select_sql = 'select upwd from py_users where uname = %s'
    cur.execute(select_sql,parmas)
    res = cur.fetchone()
    #如果res 返回的是None,证明没有用户名,登录失败
    if res is None:
    print('登录失败,用户名或密码错误!')
    return
    # print(res[0])
    #res返回的是一个元祖,所以要取得输入密码的sha1,res[0]得到的是输入密码的加密格式,判断和数据库中密码是否一样
    # 定义一个pwd变量,取得密码的加密格式
    pwd = res[0]
    if pwd == sha_pwd:
    print('登录成功')
    #将登录的数据录入到mongo中
    #col是选择的集合
    col.insert_one({'uname':username,'upwd':sha_pwd})
    else:
    print('登录失败,用户名或密码错误!')
    except Exception as ex:
    print(ex)
    finally:
    close(conn,cur)

    连接数据库

    def mysql_conn():
    return connect(host='localhost',port=3306,user='root',password='123456',database='py_demo',charset='utf8')

    关闭

    def close(conn,cur):
    cur.close()
    conn.close()

    if name == 'main':
    username = input('请输入用户名:')
    userpwd = input('请输入用户密码:')

    s1 = sha1()
    s1.update(userpwd.encode())
    sha_pwd = s1.hexdigest()
    # print(sha_pwd)
    
    # register()
    
    # login()
    
    # mongo先创建链接对象
    mongo_client = MongoClient(host='localhost',port=27017)
    # 选择要操作的数据库
    db = mongo_client.py_demo
    # 选择要使用的集合
    col = db.py_users
    # find_one 获取字典,判断是否为空
    userinfo = col.find_one({'uname':username})
    # 如果if判断 userinfo为空,则证明mongo数据库里面没有这个数据,就在mysql登录
    if userinfo is None:
        # 在mysql数据库登录
        login()
        #如果在mysql中登录,还需要将第一次登录的信息录入到mongo中
    else:
        # userinfo['upwd']获得的是用户输入的密码,userinfo是一个字典格式
        m_pwd = userinfo['upwd']
        if m_pwd == sha_pwd:
            print('在mongo中登录成功')
        else:
            print('在mongo中登录失败')

    相关文章

      网友评论

          本文标题:为登陆逻辑添加mongo的存储

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