实现代码
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()