连接数据库操作封装代码:
#!/usr/bin/env python
# coding=utf-8
# mysql封装使用
import pymysql
class MysqlHelper():
def __init__(self,host,port,db,user,passwd,charset='utf8'):
self.host = host
self.port = port
self.db = db
self.user = user
self.password = passwd
self.charset = charset
def open(self):
# 连接数据库
self.conn = pymysql.connect(host=self.host,port=self.port,db=self.db,
user=self.user,passwd=self.password,charset=self.charset)
# 创建游标对象
self.cursor = self.conn.cursor()
# 关闭
def close(self):
self.cursor.close()
self.conn.close()
# 增加、修改、删除命令语句
def cud(self,sql,params,msg="操作成功"):
try:
self.open()
# 处理逻辑数据,传入sql语句以及参数化
self.cursor.execute(sql,params)
# 执行事务
self.conn.commit()
self.close()
# 这样可以修改输出的操作成功信息提示
print(msg)
except Exception as e:
self.conn.rollback()
print("错误",e)
# 查询所有数据,多个值
def all(self,sql,params=()):
try:
self.open()
self.cursor.execute(sql,params)
data = self.cursor.fetchall()
self.close()
return data
except Exception as e:
print("错误", e)
#!/usr/bin/env python
# coding=utf-8
# 注册和登录合一起
from MysqlHelper import MysqlHelper
from hashlib import sha1
class ManageSystem():
def main(self):
while True:
print("==============XXXXX管理系统==============")
key = input("请输入相应功能数字代码(1/注册、2/登录、0/退出):")
if key == "1":
print("=============欢迎注册=============")
self.register()
elif key == "2":
print("=============欢迎登录=============")
self.login()
elif key == "0":
print("程序已退出,谢谢使用!")
exit()
else:
print("输入有误,请重新输入!")
# 加密功能
def encryption(self,pwd):
self.s1 = sha1()
self.s1.update(pwd.encode())
return self.s1.hexdigest()
# 定义连接数据库功能
def db_connect(self):
return MysqlHelper(host="localhost",port=3306,user="root",passwd="123456",
db="python3",charset="utf8")
# 注册功能
def register(self):
register_name = input("请输入注册名:")
# 判断用户名是否存在
sql_select = "select name from userinfos"
# 连接数据库
conn = self.db_connect()
# 使用MysqlHelper的all方法,获取结果
result = conn.all(sql_select)
# 存储数据库中姓名字段的列表
name_list = []
for i in range(len(result)):
name_list.append(result[i][0])
if register_name in name_list:
print("抱歉该用户名'%s'已被使用,请重新注册!"%register_name)
self.register()
else:
# 将来还需要对密码进行正则判断,比如6-8位,数字、下划线、字母组成
register_passwd = input("请输入密码:")
# 对密码进行加密
pwd_register = self.encryption(register_passwd)
# 写入数据库userinfos中
sql_insert = "insert into userinfos(name,passwd)VALUES(%s,%s)"
conn = self.db_connect()
msg = ("'%s'用户名已注册成功!"%register_name)
conn.cud(sql_insert,[register_name,pwd_register],msg)
# 登录功能
def login(self,count=0):
if count <3:
login_name = input("请输入用户名:")
login_passwd = input("请输入密码:")
# 对密码进行加密
pwd_login = self.encryption(login_passwd)
sql = "select passwd from userinfos WHERE name=%s"
conn = self.db_connect()
result = conn.all(sql,[login_name])
# 判断处理
if len(result) == 0:
print("用户名错误!")
count += 1
self.login(count)
elif result[0][0] == pwd_login:
print("用户'%s'登录成功!"%login_name)
exit()
else:
print("密码错误!")
count += 1
self.login(count)
else:
print("连续错误三次,请重新选择!")
if __name__ == "__main__":
manage = ManageSystem()
manage.main()