数据库实例:mysql与mongo结合用户登录

  • 加入mongodb后登录逻辑如下图,将图中nosql的位置换为mongodb即可

 

  • 用户数据存储的集合名称为py_users,文档格式为{'uname':'用户名','upwd':'密码'}
  • 将原来MySQL操作的代码封装到一个方法中,代码如下

 

def mysql_login():
  
 #mongodb中没有则到mysql中查询
    sql=
'select upwd from py_users whereuname=%s'
    params=[uname]
   
try:
        conn= connect(host=
'localhost',port=3306,database='python',user='root',password='mysql',charset='utf8')
        cur=conn.cursor()
       cur.execute(sql,params)
        result=cur.fetchone()
        cur.close()
       
if result==None:
           
print '用户名错误,登录失败,数据来源于mysql'
       
else:
         
  #当查询到用户及对应的密码时,将数据加入到mongodb中,以供后续登录使用
            db.py_users.insert_one({
'uname':uname,'upwd':upwd_sha1})
           
#判断密码是否正确
           
if result[0]==upwd_sha1:
               
print '登录成功,数据来源于mysql'
           
else:
               
print '密码错误,登录失败,数据来源于mysql'
   
except Exception,e:
       
print '登录失败,错误原因:%s' % e
   
finally:
        conn.close()

 

  • 创建user_mongodb.py文件,代码如下

#coding=utf-8
from MySQLdb import*
from hashlib importsha1
from pymongo import*

if __name__=='__main__':
   
try:
       
#接收输入用户名、密码
        uname=raw_input(
'请输入用户名:')
        upwd=raw_input(
'请输入密码:')

#对密码加密
        s1=sha1()
        s1.update(upwd)
        upwd_sha1=s1.hexdigest()

#根据用户名查询密码
        #
先到mongodb上查,没有再到mysql上查
        client=MongoClient(
'localhost',27017)
        db=client.py3
        result=db.py_users.find_one({
'uname':uname})
       
if result==None:
            mysql_login()
       
else:
          
 #mongodb中找到了这个用户名的数据
           
if result['upwd']==upwd_sha1:
               
print '登录成功,数据来源于mongodb'
           
else:
               
print '密码错误,登录失败,数据来源于mongodb'
   
exceptException,e:
       
print '登录失败,错误原因:%s'%e

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值