输入用户名、密码
密码加密
判断redis中是否记录了用户名,如果有则成功
如果redis中没有用户名,则到mysql中查询
从mysql中查询成功后,将用户名记录到redis中
# coding=utf8
from RedisHelper import *
from MysqlHelper import *
from pwdUtl import pwdUtl
name = input("请输入用户:")
pwd = input("输入密码:")
pwd2 = pwdUtl(pwd)
try:
# 查询redis中是否有此数据
r = RedisHelper("127.0.0.1", 6379)
# 判断redis中是否有这个用户和密码
# 此处有一个问题就是用户名可能重复吗,答案是不会,
# 在注册时,会用mysql语句判断,将此时数据库存储的是不重复的昵称和密码
if not r.get(name):
sel_sql = "select passwd from python3 where name=%s"
m = MysqlHelper("localhost", 3306, 'python3', 'root', 'mysql')
userpwd = m.fetchone(sel_sql, [name])[0]
if userpwd:
print("用户名错误")
else:
# 密码存在时,将数据存入redis数据库,实现了缓存
r.set(name, userpwd)
if userpwd == pwd2:
print("密码正确")
else:
print("密码错误")
else:
r_pwd = r.get(name)
r_pwd = r_pwd.decode('utf8')
if r_pwd == pwd2:
print("密码正确")
else:
print("密码错误")
except Exception as e:
print(e)
# MysqlHelper.py
# coding=utf-8
import pymysql
from redis import *
class MysqlHelper:
def __init__(self, host='localhost', port=3306, db='test2', user='root', passwd='mysql', charset='utf8'):
self.conn = pymysql.connect(
host=host, port=port, db=db, user=user, passwd=passwd, charset=charset)
def insert(self, sql, params):
return self.__cud(sql, params)
def update(self, sql, params):
return self.__cud(sql, params)
def delete(self, sql, params):
return self.__cud(sql, params)
def __cud(self, sql, params=[]):
# try:
cs1 = self.conn.cursor()
rows = cs1.execute(sql, params)
self.conn.commit()
cs1.close()
self.conn.close()
return rows
# except Exception,e:
# print e
# self.conn.rollback()
def fetchone(self, sql, params=[]):
# try:
cs1 = self.conn.cursor()
cs1.execute(sql, params)
row = cs1.fetchone()
cs1.close()
self.conn.close()
return row
# except Exception as e:
# print(e)
def fetchall(self, sql, params):
# try:
cs1 = self.conn.cursor()
cs1.execute(sql, params)
rows = cs1.fetchall()
cs1.close()
self.conn.close()
return rows
class RedisHelper:
def __init__(self, host='localhost', port=6379):
self.redis = StrictRedis(host, port)
def get(self, key):
return self.redis.get(key)
def set(self, key, value):
self.redis.set(key, value)
# RedisHelper.py # coding=utf8
from redis import *
class RedisHelper(object):
def __init__(self, host, port):
self.__redis = StrictRedis(host=host, port=port)
# 初始化函数不用写返回值,默认返回self本身
def set(self, key, value):
self.__redis.set(key, value)
def get(self, key):
return self.__redis.get(key)
# pwdUtl.py # coding=utf8
from hashlib import sha1
def pwdUtl(pwd):
'''加密过程'''
# 得到加密器
s1 = sha1()
# 加载要加密数据
s1.update(pwd.encode('utf-8'))
# 执行加密
hpwd = s1.hexdigest()
return hpwd