Python操作Redis的实例(七)

登录时,使用redis数据库进行查询,提升查询效率:

1.如下脚本是注册登录的实例--使用mysql数据库

import pymysql
import re
class RL():
def __init__(self):
self.db=pymysql.connect(host="localhost",user="root",password="123456",db="test")
self.cursor=self.db.cursor()

#公共方法

def PublicFuction(self):
self.username=input("请输入手机号码")
self.password=input("请输入密码(6-12位)")
usernameRes=re.match("1[3-9][0-9]{9}$",self.username)
passwordRes=re.match("\w{6,12}",self.password)
#判断用户名
if not usernameRes:
print("请输入正确的手机号码")
return False
#判断密码
if not passwordRes:
print("请输入6-12为的密码")
return False
#用户名和密码都输入正确的话,则需要查询用户是否存在
sql="select * from user where username='%s'"%self.username
#执行sql语句
self.cursor.execute(sql)
return True
#注册
def register(self):
if not self.PublicFuction():
return
if self.cursor.rowcount:
print("当前用户已存在")
return
try:
sql="insert into user(username,password) values (%s,%s)"%(self.username,self.password)
self.cursor.execute(sql)
self.db.commit()
print("注册成功!")
except:
self.db.rollback()
print("注册失败,当前系统繁忙")

def login(self):
#调用公共方法进行判断
if not self.PublicFuction():
return
if not self.cursor.rowcount:
print("请输入正确的用户名")
return
data=self.cursor.fetchone()
if self.username==data[1] and self.password==data[2]:
print("登录成功,欢迎%s用户"%self.username)
return

print("请输入正确的用户名和密码")
def con(self):
db=self.db
print(db)
if __name__ == '__main__':
rl=RL()
# rl.register()
rl.login()

2.如下是使用redis数据库实现上述的注册登录实例:

【重点分分析】

#用户注册时,当注册成功,插入mysql数据库中并插入redis数据库中
#用户登录时,直接调用redis数据库中数据进行判断
import pymysql
import re
import redis
class RL():
def __init__(self):
self.db=pymysql.connect(host="localhost",user="root",password="123456",db="test")
self.cursor=self.db.cursor()
self.r=redis.Redis(host='192.168.177.137',decode_responses=True)

def PublicFuction(self):
self.username=input("请输入手机号码")
self.password=input("请输入密码(6-12位)")
usernameRes=re.match("1[3-9][0-9]{9}$",self.username)
passwordRes=re.match("\w{6,12}",self.password)
#判断用户名
if not usernameRes:
print("请输入正确的手机号码")
return False
#判断密码
if not passwordRes:
print("请输入6-12为的密码")
return False
# 用户名和密码都输入正确的话,则需要查询用户是否存在
sql = "select * from user where username='%s'" % self.username
# 执行sql语句
self.cursor.execute(sql)
return True
#注册
def register(self):
if not self.PublicFuction():
return
if self.cursor.rowcount:
print("当前用户已存在")
return
try:
sql="insert into user(username,password) values (%s,%s)"%(self.username,self.password)
self.cursor.execute(sql)
self.db.commit()
#同时插入redis中
self.r.set(self.username,self.password)
print("注册成功!")
except:
self.db.rollback()
print("注册失败,当前系统繁忙")

def login(self):
#调用公共方法进行判断
if not self.PublicFuction():
return
#从redis中获取username对应的密码:
password=self.r.get(self.username)
#如果密码不存在,则用户名不存在
if not password:
print("该用户名不存在")
return
#如果密码存在且等于reids中的密码,则登录成功
if self.password==password:
print("登录成功,欢迎%s用户"%self.username)
return
print("请输入正确的用户和密码")

if __name__ == '__main__':
rl=RL()
# rl.register()
rl.login()

 

posted @ 2021-04-05 15:29  小珊子  阅读(588)  评论(0编辑  收藏  举报