mysql用户注册与登陆案例

先在mysql中创建一个数据库,这里数据库名为py_demo
创建一个表,这里名为py_users

create table py_users(
id int unsigned auto_increment not null primary key,
uname varchar(20) not null,
upwd char(40) not null,
is_delete bit not null default 0
);

用户注册处理流程


mysql用户注册与登陆案例_第1张图片
图片1.png

用户登陆处理流程


mysql用户注册与登陆案例_第2张图片
图片2.png

下面是代码

coding = utf-8

导入pymysql

from pymysql import *

导入加密包

from hashlib 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('登录成功')
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()

你可能感兴趣的:(mysql用户注册与登陆案例)