coding = utf-8
导入pymysql
from pymysql import *
导入加密包
from hashlib import *
导入pymong
from pymongo import *
定义一个conn
conn = None
cur = None
注册
def register():
# 添加异常
try:
conn = mysql_conn()
# 游标
cur = conn.cursor()
select_params = [username]
select_sql = 'select * from py_users where uname = %s'
# execute(sql文件,[params参数])
cur.execute(select_sql,select_params)
ret = cur.fetchone()
# print(ret)
# 判断ret返回的值,如果返回的不是None,则证明注册失败
if ret is not None:
print('用户名已存在')
return
#如果返回的是None,则证明用户名没有被注册,进行下一步
#插入数据到数据库
insert_params = [username,sha_pwd]
insert_sql = 'insert into py_users values (0,%s,%s,0)'
count = cur.execute(insert_sql,insert_params)
#count 返回的是受影响的行,如果返回的是0,证明没有插入成功
if count == 0:
print('注册失败')
else:
print('注册成功')
# 关闭事务
conn.commit()
except Exception as ex:
print(ex)
finally:
close(conn,cur)
登陆
def login():
# 添加异常
try:
conn = mysql_conn()
cur = conn.cursor()
parmas = [username]
# 因为后面要判断密码,所有最好查找upwd,便于判断
select_sql = 'select upwd from py_users where uname = %s'
cur.execute(select_sql,parmas)
res = cur.fetchone()
#如果res 返回的是None,证明没有用户名,登录失败
if res is None:
print('登录失败,用户名或密码错误!')
return
# print(res[0])
#res返回的是一个元祖,所以要取得输入密码的sha1,res[0]得到的是输入密码的加密格式,判断和数据库中密码是否一样
# 定义一个pwd变量,取得密码的加密格式
pwd = res[0]
if pwd == sha_pwd:
print('登录成功')
#将登录的数据录入到mongo中
#col是选择的集合
col.insert_one({'uname':username,'upwd':sha_pwd})
else:
print('登录失败,用户名或密码错误!')
except Exception as ex:
print(ex)
finally:
close(conn,cur)
连接数据库
def mysql_conn():
return connect(host='localhost',port=3306,user='root',password='123456',database='py_demo',charset='utf8')
关闭
def close(conn,cur):
cur.close()
conn.close()
if name == 'main':
username = input('请输入用户名:')
userpwd = input('请输入用户密码:')
s1 = sha1()
s1.update(userpwd.encode())
sha_pwd = s1.hexdigest()
# print(sha_pwd)
# register()
# login()
# mongo先创建链接对象
mongo_client = MongoClient(host='localhost',port=27017)
# 选择要操作的数据库
db = mongo_client.py_demo
# 选择要使用的集合
col = db.py_users
# find_one 获取字典,判断是否为空
userinfo = col.find_one({'uname':username})
# 如果if判断 userinfo为空,则证明mongo数据库里面没有这个数据,就在mysql登录
if userinfo is None:
# 在mysql数据库登录
login()
#如果在mysql中登录,还需要将第一次登录的信息录入到mongo中
else:
# userinfo['upwd']获得的是用户输入的密码,userinfo是一个字典格式
m_pwd = userinfo['upwd']
if m_pwd == sha_pwd:
print('在mongo中登录成功')
else:
print('在mongo中登录失败')