描述:

上一篇博客我写了一个简单的通讯录,但是还是觉得不够完美:

需要输入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实现简易通讯录修改版相关推荐

  1. python给pip修改镜像-cmd命令修改版

    python给pip修改镜像-cmd命令修改版 本来是想用创建pip.ini的.但没有成功,于是通过命令来设置,成功了 1.查看pip的默认源 之后想修改回默认源要用 在命令行输入 pip help ...

  2. python课程设计编写电子通讯录_python写一个通讯录

    闲着没事,用python写一个模拟通讯录,要求要实现常用的通讯录的功能,基本流程如下 ​ 接下来就按照这个流程实现各个模块的功能 1. 定义一个类,并初始化 def __init__(self): w ...

  3. 用python写一个通讯录_python写一个通讯录

    闲着没事,用python写一个模拟通讯录,要求要实现常用的通讯录的功能,基本流程如下 ​ 接下来就按照这个流程实现各个模块的功能 1. 定义一个类,并初始化 def __init__(self): w ...

  4. python创建列表_python创建与遍历List二维列表的方法

    python 创建List二维列表 lists = [[] for i in range(3)] # 创建的是多行三列的二维列表 for i in range(3): lists[0].append( ...

  5. python 创建子类_python创建子类的方法分析

    本文实例讲述了python创建子类的方法.分享给大家供大家参考,具体如下: 如果你的类没有从任何祖先类派生,可以使用object作为父类的名字.经典类的声明唯一不同之处在于其没有从祖先类派生---此时 ...

  6. python创建追加_Python文件的创建与追加

    (转载)https://www.xshell.net/python/python_open.html Posted by 破冰 on 2013-9-17 17:29 Tuesday 一.用Python ...

  7. python创建矩阵_Python创建对称矩阵的方法示例【基于numpy模块】

    本文实例讲述了Python创建对称矩阵的方法.分享给大家供大家参考,具体如下: 对称(实对称)矩阵也即: step 1:创建一个方阵 >>> import numpy as np & ...

  8. 如何用python创建文件_python在指定目录创建文件

    Python无法创建文件夹,如何制定创建目录?温柔也好,凶狠也罢.想有一个陌生的自己,给自己一些惊喜. /主目录/桌面/gnssIR_python-master:/usr/local/bin:/usr ...

  9. python创建变量_python创建变量

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 创建: 当python变量'赋值'时,根据值类型创建变量,如:a=1引用: 当参 ...

  10. python实现手机通讯录_python实现手机通讯录搜索功能

    # -*- coding:utf-8 -*- # 练习2: # 模拟手机通讯录搜索功能 class PERSON(object): def __init__(self): self.name_list ...

最新文章

  1. 为什么我们需要Pod?(容器设计模式sidecar)
  2. stm8s开发(二) GPIO的使用:点亮LED!
  3. 03_Introduction_to_AMBA_AXI
  4. pcs7更改项目计算机名时出错,PCS7 C/S报警问题-工业支持中心-西门子中国
  5. windows下buildbot 的搭建及config文件讲解
  6. mpython掌控板_用mpython x玩转掌控板——微信小程序 遇上掌控板
  7. Oracle数据库to_date()和to_char()的相关
  8. 2017.12.1T19_B2_6
  9. Java GC机制详解
  10. java代理模式与反射机制
  11. 数学建模 员工指派问题 Lingo求解优化问题
  12. 使用verilog实现4选1数据选择器的几种方法
  13. 这个小众副业,一次200,有人月入3万!
  14. linux发行版_看一看2020年最漂亮的Linux发行版
  15. 电阻式触摸屏UI设计
  16. kinect v2 相机标定
  17. excel不同文件表格批量加表头vba_多个excel表格自动汇总|如何把两个文件表格用VBA从另一个EXCEL表格导入数据到这个表格中?...
  18. 数学--数论--欧几里得定理和拓展欧几里得定理
  19. 服务器如何接收GPS定位器发送过来的数据
  20. matlab制作莫尔条纹,光栅莫尔条纹 matlab程序

热门文章

  1. 一个域名显示多个服务器ip,一个域名指向多个ip的方法
  2. 创蓝云智短信接口发送短信函数
  3. 优化 AIX 6.1 的性能
  4. caffe 训练笔记总结
  5. 苹果html 闪退,苹果打开软件闪退是怎么回事_苹果手机一打开软件就闪退如何解决-win7之家...
  6. 21 年年度最佳开源软件!
  7. 配置 nginx server 出现nginx: [emerg] root directive is duplicate in /etc/nginx/server/blogs.conf:107...
  8. ESX VMware是什么
  9. 读书百客:《临江仙引·画舸》赏析
  10. cubieboard2 android,在cubieboard2双卡版上从零构建Android4.2.2系统