python-注册登录:注册后的数据存入数据库mysql、登录的数据从mysql中获取

    需求:
        注册、登录
        1、注册成功的数据存入数据库(mysql)
        2、登录的数据是数据库里已存在的
        3、密码要存成密文

import pymysql
import hashlib

#执行sql语句
def my_sql(sql):
    #连接数据库
    conn=pymysql.connect(host='host',user='user',password='password',db='db',port=3306,
           charset='utf8',autocommit=True)#autocommit 自动提交sql
    cur=conn.cursor(pymysql.cursors.DictCursor)#建立游标,设置返回数据类型是字典
    cur.execute(sql)#执行sql
    res=cur.fetchone()#返回一条数据
    cur.close()#关闭游标
    conn.close()#关闭数据库
    return res

#加密
def my_md5(s,salt=''):#salt 加盐
    s = s + salt
    news=s.encode()#加密之前用 encode()变成二进制
    m=hashlib.md5(news) #加密
    return m.hexdigest() #返回密文

#注册
def reg():
    for i in range(3):
        print('欢迎注册'.center(50, '*'))
        user = input('账号:').strip().lower()  # 去除空格或换行符,输入的字母全部转为小写
        pd = input('密码:').strip()
        cpd = input('确认密码:').strip()
        sql='select username,passwd from app_myuser where username="%s";'%user
        # user_dic=my_sql(sql)
        if len(user) not in range(6, 11) or len(pd) not in range(6, 11):
            print('账号/密码长度必须在6-10之间')
        elif pd != cpd:
            print('两次输入的密码不一致')
        # elif user == user_dic['username']:
        elif my_sql(sql):#非空即真
            print('用户名重复!')
        else:  # 账号和密码合格则存入数据库,密码存入密文
            insert_sql='insert into app_myuser (username,passwd,is_admin) value ("%s","%s",1);'%(user,my_md5(pd))
            my_sql(insert_sql)
            print(user,my_md5(pd))
            print('注册成功'.center(50, '*'))
            break
    else:
        print('输入错误次数过多')

#登录
def login():
    for i in range(3):
        user = input('请输入登录账号:').strip().lower()
        pd = input('请输入密码:').strip()
        sql = 'select username,passwd from app_myuser where username="%s";'%user
        if user=="" or pd=="":
            print('账号/密码不能为空')
        else:
            user_dic = my_sql(sql)
            if user_dic:
                if my_md5(pd) == user_dic.get('passwd'):
                    print('登陆成功!')
                    break
                else:
                    print('密码错误!')
            else:
                print('用户不存在')
    else:
        print('错误次数较多,请稍后重新输入!')
原文地址:https://www.cnblogs.com/you-me/p/10170219.html