使用python编写个人密码管理器

实现代码

from pymysql import connect
from prettytable import PrettyTable


class Passwd_Manager(object):
	def __init__(self):
		# 创建connect连接
		self.conn = connect(host="localhost", port=3306, user="your_account", password="your_passwd", database="your_database", charset="utf8")	
		# 获取cursor对象
		self.cs = self.conn.cursor()

		self.show_menu()

	def __der__(self):
		self.cs.close()
		self.conn.close()

	def show(self, info):
		table = PrettyTable()
		table.field_names = ["id", "website", "name", "passwd", "email", "is_delete"]
		for line_info in info:
			table.add_row([line_info[0], line_info[1], line_info[2], line_info[3], line_info[4], line_info[5]])
		print(table)

	def choose(self, info):
		table = PrettyTable()
		table.field_names = ["id", "website", "name", "passwd", "email", "is_delete"]
		num_list = list()
		for line_info in info:
			table.add_row([line_info[0], line_info[1], line_info[2], line_info[3], line_info[4], line_info[5]])
			num_list.append(line_info[0])
		print(table)
		num = input("请确认您要选择的id %s: " % num_list)
		try:
			num = int(num)
		except Exception as e:
			print("输入错误,请您输入对应的整数......")
			return
		else:
			if num in num_list:
				return num
			else:
				print("选择错误,请您重新选择......")
		

	def show_information(self):
		sql = "select * from passwd where is_delete!=1;"
		self.cs.execute(sql)
		info = self.cs.fetchall()
		if info:
			self.show(info)	
		else:
			print("还没有信息,请先添加信息......")

	def change(self, new_info, raw_info):
		if new_info:
			return new_info
		else:
			return raw_info

	def add_information(self):
		website = input("website:")
		name = input("name:")
		passwd = input("passwd:")
		email = input("email:")
		sql = "insert into passwd values(0, %s, %s, %s, %s, 0);"
		self.cs.execute(sql, (website, name, passwd, email))
		self.conn.commit()
		print("添加 %s 信息成功!" % website)

	def find_information(self):
		find_name = input("请输入您要查询的website:")
		sql = "select * from passwd where website like %s and is_delete!=1;"
		self.cs.execute(sql, ("%"+find_name+"%",))
		info = self.cs.fetchall()
		if info:
			self.show(info)	
		else:
			print("抱歉,没有查询到关于%s的消息......" % find_name)

	def change_information(self):
		change_name = input("请输入您要修改的website:")
		sql = "select * from passwd where website like %s and is_delete!=1;"
		self.cs.execute(sql, ("%"+change_name+"%",))
		info = self.cs.fetchall()
		if info:
			choose_num = self.choose(info)
			if choose_num:
				new_website = input("website:")
				new_name = input("name:")
				new_passwd = input("passwd:")
				new_email = input("email:")

				sql = "select * from passwd where id=%s;"
				self.cs.execute(sql, (choose_num,))

				choose_info = self.cs.fetchone()
				raw_website = choose_info[1]
				raw_name = choose_info[2]
				raw_passwd = choose_info[3]
				raw_email = choose_info[4]

				website = self.change(new_website, raw_website)
				name = self.change(new_name, raw_name)
				passwd = self.change(new_passwd, raw_passwd)
				email = self.change(new_email, raw_email)

				sql = "update passwd set website=%s,name=%s,passwd=%s,email=%s where id=%s;"
				self.cs.execute(sql, (website, name, passwd, email, choose_num))
				self.conn.commit()
				print("修改 %s 信息成功!" % website)
		else:
			print("抱歉,没有关于%s的消息......" % change_name)

	def delete_infomation(self):
		delete_name = input("请输入您要删除的website:")
		sql = "select * from passwd where website like %s and is_delete!=1;"
		self.cs.execute(sql, ("%"+delete_name+"%",))
		info = self.cs.fetchall()
		if info:
			choose_num = self.choose(info)
			sql = "update passwd set is_delete=1 where id=%s;"
			self.cs.execute(sql, (choose_num,))
			self.conn.commit()
			print("删除信息成功!")
		else:		
			print("抱歉,没有关于%s的信息......" % delete_name)

	def show_all(self):
		sql = "select * from passwd;"
		self.cs.execute(sql)
		info = self.cs.fetchall()
		if info:
			self.show(info)	
		else:
			print("还没有信息,请先添加信息......")

	def show_menu(self):
		while True:
			print("*" * 50)
			print("Password Manager V1.0")
			print("-" * 50)
			print("1. 显示信息")
			print("2. 添加信息")
			print("3. 查找信息")
			print("4. 修改信息")
			print("5. 删除信息")
			print("6. 显示所有")
			print("0. 退出程序")
			print("*" * 50)
			num = input("请输入对应功能的序号:")
			if num == "1":
				self.show_information()
			elif num == "2":
				self.add_information()
			elif num == "3":
				self.find_information()
			elif num == "4":
				self.change_information()
			elif num == "5":
				self.delete_infomation()
			elif num == "6":
				self.show_all()
			elif num == "0":
				print("欢迎再次使用 Password Manager!")
				break
			else:
				print("输入错误,请您重新输入......")


def main():
	passwd_manger = Passwd_Manager()


if __name__ == '__main__':
	main()
原创文章 10 获赞 10 访问量 412

猜你喜欢

转载自blog.csdn.net/weixin_44159425/article/details/104326649