登录时,使用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()
|