先在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
);
用户注册处理流程
用户登陆处理流程
下面是代码
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()