import sqlite3

conn = sqlite3.connect('E:\\test.sqlite') # 建立数据库联接
cursor = conn.cursor() # 建立 cursor 对象

#新建一个数据表
sqlstr='CREATE TABLE IF NOT EXISTS table01 ("num" INTEGER PRIMARY KEY NOT NULL ,"tel" TEXT)'
cursor.execute(sqlstr)

# 新增一条记录
sqlstr='insert into table01 values(1,"02-1234567")'
cursor.execute(sqlstr)

conn.commit() # 主动更新
conn.close() # 关闭数据库连接

def menu():
os.system("cls")
print("账号、密码管理系统")
print("-------------------------")
print("1. 输入账号、密码")
print("2. 显示账号、密码")
print("3. 修 改 密 码")
print("4. 删除账号、密码")
print("0. 结 束 程 序")
print("-------------------------")

def ReadData():
with open('E:\\password.txt','r', encoding = 'UTF-8-sig') as f:
filedata = f.read()
if filedata != "":
data = ast.literal_eval(filedata)
return data
else: return dict()

def disp_data():
print("账号\t密码")
print("================")
for key in data:
print("{}\t{}".format(key,data[key]))
input("按任意键返回主菜单")

def input_data():
while True:
name =input("请输入账号(Enter==>停止输入)")
if name=="": break
if name in data:
print("{}账号已存在!".format(name))
continue
password=input("请输入密码:")
data[name]=password
with open('password.txt','w',encoding = 'UTF-8-sig') as f:
f.write(str(data))
print("{}已保存完毕".format(name))

def edit_data():
while True:
name =input("请输入要修改的账号(Enter==>停止输入)")
if name=="": break
if not name in data:
print("{} 账号不存在!".format(name))
continue
print("原密码为:{}".format(data[name]))
password=input("请输入新密码:")
data[name]=password
with open('password.txt','w',encoding = 'UTF-8-sig') as f:
f.write(str(data))
input("密码更改完毕,请按任意键返回主菜单")
break

def delete_data():
while True:
name =input("请输入要删除的账号(Enter==>停止输入)")
if name=="": break
if not name in data:
print("{} 账号不存在!".format(name))
continue
print("确定删除{}的数据!:".format(name))
yn=input("(Y/N)?")
if (yn=="Y" or yn=="y"):
del data[name]
with open('password.txt','w',encoding = 'UTF-8-sig') as f:
f.write(str(data))
input("已删除完毕,请按任意键返回主菜单")
break

### 主程序从这里开始 ###

import os,ast
data=dict()

data = ReadData() # 读取文本文件后转换为 dict
while True:
menu()
choice = int(input("请输入您的选择:"))
print()
if choice==1:
input_data()
elif choice==2:
disp_data()
elif choice==3:
edit_data()
elif choice==4:
delete_data()
else:
break
print("程序执行完毕!")

import sqlite3

def menu():
os.system("cls")
print("账号、密码管理系统")
print("-------------------------")
print("1. 输入账号、密码")
print("2. 显示账号、密码")
print("3. 修 改 密 码")
print("4. 删除账号、密码")
print("0. 结 束 程 序")
print("-------------------------")

def disp_data():
cursor = conn.execute('select * from password')
print("账号\t密码")
print("================")
for row in cursor:
print("{}\t{}".format(row[0],row[1]))
input("按任意键返回主菜单")

def input_data():
while True:
name =input("请输入账号(Enter==>停止输入)")
if name=="": break
sqlstr="select * from password where name='{}'" .format(name)
cursor=conn.execute(sqlstr)
row = cursor.fetchone()
if not row==None:
print("{} 账号已存在!".format(name))
continue
password=input("请输入密码:")
sqlstr="insert into password values('{}','{}');".format(name,password)
conn.execute(sqlstr)
conn.commit()
print("{} 已保存完毕".format(name))

def edit_data():
while True:
name =input("请输入要修改的账号(Enter==>停止输入)")
if name=="": break
sqlstr="select * from password where name='{}'" .format(name)
cursor=conn.execute(sqlstr)
row = cursor.fetchone()
print(row)
if row==None:
print("{} 账号不存在!".format(name))
continue
print("原来密码为:{}".format(row[1]))
password=input("请输入新密码:")
sqlstr = "update password set pass='{}' where name='{}'".format(password, name)
conn.execute(sqlstr)
conn.commit()
input("密码更改完毕,请按任意键返回主菜单")
break

def delete_data():
while True:
name =input("请输入要删除的账号(Enter==>停止输入)")
if name=="": break
sqlstr="select * from password where name='{}'" .format(name)
cursor=conn.execute(sqlstr)
row = cursor.fetchone()
if row==None:
print("{} 账号不存在!".format(name))
continue
print("确定删除{}的数据!:".format(name))
yn=input("(Y/N)?")
if (yn=="Y" or yn=="y"):
sqlstr = "delete from password where name='{}'".format(name)
conn.execute(sqlstr)
conn.commit()
input("已删除完毕,请按任意键返回主菜单")
break

### 主程序从这里开始 ###

import os,sqlite3

conn = sqlite3.connect('E:\\Sqlite01.sqlite')
while True:
menu()
choice = int(input("请输入您的选择:"))
print()
if choice==1:
input_data()
elif choice==2:
disp_data()
elif choice==3:
edit_data()
elif choice==4:
delete_data()
else:
break

conn.close()
print("程序执行完毕!")

吴裕雄 实战python编程(1)的更多相关文章

  1. 吴裕雄 实战PYTHON编程(10)

    import cv2 cv2.namedWindow("frame")cap = cv2.VideoCapture(0)while(cap.isOpened()): ret, im ...

  2. 吴裕雄 实战PYTHON编程(9)

    import cv2 cv2.namedWindow("ShowImage1")cv2.namedWindow("ShowImage2")image1 = cv ...

  3. 吴裕雄 实战PYTHON编程(8)

    import pandas as pd df = pd.DataFrame( {"林大明":[65,92,78,83,70], "陈聪明":[90,72,76, ...

  4. 吴裕雄 实战PYTHON编程(7)

    import os from win32com import client word = client.gencache.EnsureDispatch('Word.Application')word. ...

  5. 吴裕雄 实战PYTHON编程(6)

    import matplotlib.pyplot as plt plt.rcParams['font.sans-serif']=['Simhei']plt.rcParams['axes.unicode ...

  6. 吴裕雄 实战PYTHON编程(5)

    text = '中华'print(type(text))#<class 'str'>text1 = text.encode('gbk')print(type(text1))#<cla ...

  7. 吴裕雄 实战PYTHON编程(4)

    import hashlib md5 = hashlib.md5()md5.update(b'Test String')print(md5.hexdigest()) import hashlib md ...

  8. 吴裕雄 实战python编程(3)

    import requests from bs4 import BeautifulSoup url = 'http://www.baidu.com'html = requests.get(url)sp ...

  9. 吴裕雄 实战python编程(2)

    from urllib.parse import urlparse url = 'http://www.pm25x.com/city/beijing.htm'o = urlparse(url)prin ...

随机推荐

  1. MySQL的Join使用

    在MySQL(以5.1为例)中,表连接的语法可以参见MySQL官方手册:MySQL官方手册-JOIN 在查询中,连接的语法类似 SELECT select_expr FROM table_refere ...

  2. Android画图之抗锯齿 paint 和 Canvas 两种方式

    在画图的时候,图片如果旋转或缩放之后,总是会出现那些华丽的锯齿.其实Android自带了解决方式.    方法一:给Paint加上抗锯齿标志.然后将Paint对象作为参数传给canvas的绘制方法. ...

  3. C/C++基础----IO库

    IO对象无拷贝或赋值,通常以引用形式传递. IO库条件状态 strm::iostate 一种机器相关的类型,提供了表达条件状态的完整功能 strm::badbit 用来指出流已经崩溃 strm::fa ...

  4. 【spring框架】spring获取webapplicationcontext,applicationcontext几种方法详解--(转)

    方法一:在初始化时保存ApplicationContext对象代码:ApplicationContext ac = new FileSystemXmlApplicationContext(" ...

  5. 用Keras搭建神经网络 简单模版(三)—— CNN 卷积神经网络(手写数字图片识别)

    # -*- coding: utf-8 -*- import numpy as np np.random.seed(1337) #for reproducibility再现性 from keras.d ...

  6. autopy的使用探索

    autopy这个包可以直接操作电脑的一些行为,比如点击,移动鼠标啥的,但是可能只使用于windows,用处有限,不过做个简单的游戏辅助还是可以的. 网上资料贼少,很多不能用的,现总结一些可以用的放在这 ...

  7. 关于json_encode()的使用注意

    json_encode($json_str,true)在一般情况下可以返回一个数组,但当$json_str的字符编码是GBK或其它时,返回的是一个 空数组,必须用iconv(‘gbk’,‘ut8//I ...

  8. Linux下不同颜色文件的类型

    蓝色表示目录: 绿色表示可执行文件: 红色表示压缩文件: 浅蓝色表示链接文件:主要是使用ln命令建立的文件 灰色表示其它文件: 红色闪烁表示链接的文件有问题了: 黄色是设备文件,包括block, ch ...

  9. 普适注意力:用于机器翻译的2D卷积神经网络,显著优于编码器-解码器架构

    现有的当前最佳机器翻译系统都是基于编码器-解码器架构的,二者都有注意力机制,但现有的注意力机制建模能力有限.本文提出了一种替代方法,这种方法依赖于跨越两个序列的单个 2D 卷积神经网络.该网络的每一层 ...

  10. MIT提出精细到头发丝的语义分割技术,打造效果惊艳的特效电影

    来自 MIT CSAIL 的研究人员开发了一种精细程度远超传统语义分割方法的「语义软分割」技术,连头发都能清晰地在分割掩码中呈现.在对比实验中,他们的结果远远优于 PSPNet.Mask R-CNN. ...