数据库实例: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
總結
以上是生活随笔為你收集整理的数据库实例:mysql与mongo结合用户登录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python开始之路—基础中的基础
- 下一篇: python mysql返回,pytho