python创建通讯录_python实现简易通讯录修改版
描述:
上一篇博客我写了一个简单的通讯录,但是还是觉得不够完美:
需要输入ID,虽然ID是主键,但是没有实现自增功能;
忘记加电话号码了;
如果插入用户名相同,则后续的查、改、删功能受到影响;
所以,我这个修改版主要修正了以上三点缺陷。具体如下
将用户ID设置为自增字段,即就是不用输入ID,程序会自动帮你将插入的用户进行排序并附上ID,默认从1开始;SQLite实现主键自增功能,请查看SQLiteAUTOINCREMENT/自动递增这篇博客。
创建表时增加了电话号码字段;
插入的用户名不能重复;
好了,废话不多说,附上新代码,哈哈~~~
#-*- coding:utf-8 -*-
import sqlite3
#打开本地数据库用于存储用户信息
conn = sqlite3.connect('mysql_person.db')
#在该数据库下创建表,创建表的这段代码在第一次执行后需要注释掉,否则再次执行程序会一直提示:该表已存在
conn.execute ('''CREATE TABLE MT_table1(
ID INTEGER PRIMARY KEY AUTOINCREMENT,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL,
PhoneNumber INT NOT NULL);''')
print "Table created successfully";
#增加用户信息
def insert():
USER_NAME = raw_input('请输入用户昵称:')
cursor = conn.execute("SELECT name from MT_table1 where name = '%s';"%USER_NAME)
for row in cursor:
if USER_NAME == row[0]:
print "sorry,改用户名已存在,请重新输入用户名"
break
else:
AGE = input('请输入年龄:')
ADDRESS = raw_input('请输入用户地址:')
SALARY = input('请输入用户薪水:')
PhoneNumber = input("请输入联系方式:")
#为避免代码太长,以下我用字符串的连接特性将代码缩短
sql1 = 'INSERT INTO MT_table1(NAME,AGE,ADDRESS,SALARY,PhoneNumber)'
sql1 += 'VALUES("%s","%d","%s","%d","%d");'%(USER_NAME,AGE,ADDRESS,SALARY,PhoneNumber)
conn.execute(sql1)
conn.commit()
print "Records insert successfully"
#删除用户信息
def delete():
delete_name = raw_input("请输入所要删除的联系人姓名:")
cursor = conn.execute("SELECT name from MT_table1 where name = '%s';"%delete_name)
for row in cursor:
if delete_name == row[0]:
conn.execute("DELETE from MT_table1 where name = '%s';"%delete_name)
conn.commit()
print "Records delete successfully"
break
else:
print "sorry,不存在该用户"
#修改用户信息
def modify():
update_name = raw_input("请输入要修改用户的姓名:")
sql6 = "SELECT name from MT_table1 where name = '%s';"%update_name
cursor = conn.execute(sql6)
for row in cursor:
if update_name == row[0]:
New_addr = raw_input("请输入要修改用户的新地址:")
New_age = input("请输入要修改用户的新年龄:")
New_salary = input("请输入要修改用户的新薪水:")
New_num = input("输入要修改用户的新号码:")
sql3 = "UPDATE MT_table1 set address = '%s',age = '%d',salary = '%d',PhoneNumber = '%d' where \
name = '%s';"%(New_addr,New_age,New_salary,New_num,update_name)
conn.execute(sql3)
conn.commit()
print "修改成功"
sql5 = "SELECT id, name, age,address, salary ,PhoneNumber from MT_table1 where name = '%s';"%update_name
cursor = conn.execute(sql5)
for row in cursor:
print "ID = ", row[0]
print "NAME = ", row[1]
print "AGE = ",row[2]
print "ADDRESS = ", row[3]
print "SALARY = ", row[4]
print "PhoneNumber = ",row[5], "\n"
break
else:
print "sorry,不存在该用户信息"
#查询用户信息
def search():
conn = sqlite3.connect('mysql_person.db')
search_name = raw_input('请输入要查询的用户姓名')
sql2 = "SELECT id,name,age, address, salary ,PhoneNumber from MT_table1 where name= '%s';" % (search_name)
cursor = conn.execute(sql2)
for row in cursor:
print "ID = ", row[0]
print "NAME = ", row[1]
print "AGE = ",row[2]
print "ADDRESS = ", row[3]
print "SALARY = ", row[4]
print "PhoneNumber = ",row[5], "\n"
break
else:
print "sorry,没有该用户信息"
#显示所有用户信息
def showall():
cursor = conn.execute("SELECT id, name,age, address, salary ,PhoneNumber from MT_table1")
for row in cursor:
print "ID = ", row[0]
print "NAME = ", row[1]
print "AGE = ",row[2]
print "ADDRESS = ", row[3]
print "SALARY = ", row[4]
print "PhoneNumber = ",row[5], "\n"
print "Operation done successfully";
cursor = conn.execute("select count(*) from MT_table1;")
for row in cursor:
print "一共有%d个用户"%row[0]
def menu():
print '1.新增联系人'
print '2.删除联系人'
print '3.修改联系人'
print '4.查询联系人'
print '5.显示所有联系人'
print '6.退出程序'
print 'What do you want to do?'
while True:
menu()
x = raw_input('请输入您的选择菜单号:')
if x == '1':
insert()
continue
if x == '2':
delete()
continue
if x == '3':
modify()
continue
if x == '4':
search()
continue
if x == '5':
showall()
continue
if x == '6':
print "谢谢使用!"
exit()
continue
else:
print "输入的选项不存在,请重新输入!"
continue
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
python创建通讯录_python实现简易通讯录修改版相关推荐
- python给pip修改镜像-cmd命令修改版
python给pip修改镜像-cmd命令修改版 本来是想用创建pip.ini的.但没有成功,于是通过命令来设置,成功了 1.查看pip的默认源 之后想修改回默认源要用 在命令行输入 pip help ...
- python课程设计编写电子通讯录_python写一个通讯录
闲着没事,用python写一个模拟通讯录,要求要实现常用的通讯录的功能,基本流程如下 接下来就按照这个流程实现各个模块的功能 1. 定义一个类,并初始化 def __init__(self): w ...
- 用python写一个通讯录_python写一个通讯录
闲着没事,用python写一个模拟通讯录,要求要实现常用的通讯录的功能,基本流程如下 接下来就按照这个流程实现各个模块的功能 1. 定义一个类,并初始化 def __init__(self): w ...
- python创建列表_python创建与遍历List二维列表的方法
python 创建List二维列表 lists = [[] for i in range(3)] # 创建的是多行三列的二维列表 for i in range(3): lists[0].append( ...
- python 创建子类_python创建子类的方法分析
本文实例讲述了python创建子类的方法.分享给大家供大家参考,具体如下: 如果你的类没有从任何祖先类派生,可以使用object作为父类的名字.经典类的声明唯一不同之处在于其没有从祖先类派生---此时 ...
- python创建追加_Python文件的创建与追加
(转载)https://www.xshell.net/python/python_open.html Posted by 破冰 on 2013-9-17 17:29 Tuesday 一.用Python ...
- python创建矩阵_Python创建对称矩阵的方法示例【基于numpy模块】
本文实例讲述了Python创建对称矩阵的方法.分享给大家供大家参考,具体如下: 对称(实对称)矩阵也即: step 1:创建一个方阵 >>> import numpy as np & ...
- 如何用python创建文件_python在指定目录创建文件
Python无法创建文件夹,如何制定创建目录?温柔也好,凶狠也罢.想有一个陌生的自己,给自己一些惊喜. /主目录/桌面/gnssIR_python-master:/usr/local/bin:/usr ...
- python创建变量_python创建变量
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 创建: 当python变量'赋值'时,根据值类型创建变量,如:a=1引用: 当参 ...
- python实现手机通讯录_python实现手机通讯录搜索功能
# -*- coding:utf-8 -*- # 练习2: # 模拟手机通讯录搜索功能 class PERSON(object): def __init__(self): self.name_list ...
最新文章
- 为什么我们需要Pod?(容器设计模式sidecar)
- stm8s开发(二) GPIO的使用:点亮LED!
- 03_Introduction_to_AMBA_AXI
- pcs7更改项目计算机名时出错,PCS7 C/S报警问题-工业支持中心-西门子中国
- windows下buildbot 的搭建及config文件讲解
- mpython掌控板_用mpython x玩转掌控板——微信小程序 遇上掌控板
- Oracle数据库to_date()和to_char()的相关
- 2017.12.1T19_B2_6
- Java GC机制详解
- java代理模式与反射机制
- 数学建模 员工指派问题 Lingo求解优化问题
- 使用verilog实现4选1数据选择器的几种方法
- 这个小众副业,一次200,有人月入3万!
- linux发行版_看一看2020年最漂亮的Linux发行版
- 电阻式触摸屏UI设计
- kinect v2 相机标定
- excel不同文件表格批量加表头vba_多个excel表格自动汇总|如何把两个文件表格用VBA从另一个EXCEL表格导入数据到这个表格中?...
- 数学--数论--欧几里得定理和拓展欧几里得定理
- 服务器如何接收GPS定位器发送过来的数据
- matlab制作莫尔条纹,光栅莫尔条纹 matlab程序
热门文章
- 一个域名显示多个服务器ip,一个域名指向多个ip的方法
- 创蓝云智短信接口发送短信函数
- 优化 AIX 6.1 的性能
- caffe 训练笔记总结
- 苹果html 闪退,苹果打开软件闪退是怎么回事_苹果手机一打开软件就闪退如何解决-win7之家...
- 21 年年度最佳开源软件!
- 配置 nginx server 出现nginx: [emerg] root directive is duplicate in /etc/nginx/server/blogs.conf:107...
- ESX VMware是什么
- 读书百客:《临江仙引·画舸》赏析
- cubieboard2 android,在cubieboard2双卡版上从零构建Android4.2.2系统