python中Mysql和redis结合使用验证登录(实例)

简介

使用python写一个简单的redis和MySQL的验证登陆,我们要达到的目的有以下几种:

  1. 在MySQL中创建用户表,有用户名和密码字段
  2. 让用户输入用户名和密码进行登录,如果用户名和密码在表中存在则登录成功,否则输出登录失败
  3. 如果登录成功,则将登录信息缓存在redis中如果登录成功,则将登录信息缓存在redis中
  4. 以后用户的每次登录,都首先查询redis中是否有缓存
  5. 如果有就直接登录
  6. 如果没有就查询MySQL,用户则存在就将该用户信息缓存到redis

redis使用方法详细介绍

https://www.cnblogs.com/idiotgroup/p/5455282.html

注意,MySQL中我选择了我的batabase为user,要拿走代码使用需要把表改成你自己库里的表名。
注意,redis中我选择了是我的默认db0 根据不同的库自行选择哦

# 首先导入这两个库
import pymysql
import redis  

# 获取并封装MySQL验证功能
def Mysql():
    conn = pymysql.connect(host='localhost', user='root', password='123456', database='user', port=3306, charset='utf8')
    cursor = conn.cursor()
    affected = cursor.execute("select * from username where account = '%s' and password = '%s'" % (user, password))
    if affected == 1:
        print('登陆成功!')
        conn.close()
        return 1
    else:
        print('输入错误,请核实账号或者密码是否正确!')
        conn.close()
        return 0


# 获取到MySQL验证结果,验证成功便写入ridis
def xieru():
    n = Mysql()
    if n == 0:
        pass
    else:
        Redis.set(user, password)  # 获取输入的账号


user = input('输入您的账号')  # 获取输入的密码
password = input('输入您的密码')  # 获取redis库
Redis = redis.StrictRedis(host='localhost', port=6379, password='123456',
                          db=0)  # 验证输入的账号是否存在redis键中,存在返回True,不存在返回False
User = Redis.exists(user)  # 验证输入的账号是否存在ridis键中,存在返回值,不存在返回None
Password = Redis.get(user)  # 判断 首先账号存在,并且值等于输入的密码,并且调用封装了获取到MySQL验证结果,验证成功便写入ridis的函数,一键搞定
if User == True and password == Password.decode():
    print('恭喜您登陆成功!')
else:
    xieru()  #写入redis

猜你喜欢

转载自blog.csdn.net/weixin_42784553/article/details/86569128