python实现简易通讯录修改版


Posted in Python onMarch 13, 2018

描述:

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

需要输入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使用在线API查询IP对应的地理位置信息实例
Jun 01 Python
浅谈Django自定义模板标签template_tags的用处
Dec 20 Python
对TensorFlow中的variables_to_restore函数详解
Jul 30 Python
python 读取Linux服务器上的文件方法
Dec 27 Python
Python弹出输入框并获取输入值的实例
Jun 18 Python
淘宝秒杀python脚本 扫码登录版
Sep 19 Python
浅谈Python访问MySQL的正确姿势
Jan 07 Python
给ubuntu18安装python3.7的详细教程
Jun 08 Python
用python发送微信消息
Dec 21 Python
利用python+request通过接口实现人员通行记录上传功能
Jan 13 Python
用Python可视化新冠疫情数据
Jan 18 Python
pd.DataFrame中的几种索引变换的实现
Jun 16 Python
python学生信息管理系统
Mar 13 #Python
python时间日期函数与利用pandas进行时间序列处理详解
Mar 13 #Python
python用户管理系统
Mar 13 #Python
Windows环境下python环境安装使用图文教程
Mar 13 #Python
Python Numpy 数组的初始化和基本操作
Mar 13 #Python
python 中的list和array的不同之处及转换问题
Mar 13 #Python
python2.7安装图文教程
Mar 13 #Python
You might like
PHP类的静态(static)方法和静态(static)变量使用介绍
2012/02/19 PHP
js中关于new Object时传参的一些细节分析
2011/03/13 Javascript
在浏览器窗口上添加遮罩层的方法
2012/11/12 Javascript
常用jQuery代码分享
2015/07/14 Javascript
JavaScript和jquery获取父级元素、子级元素、兄弟元素的方法
2016/06/05 Javascript
vue.js中$watch的用法示例
2016/10/04 Javascript
浅谈jquery高级方法描述与应用
2016/10/04 Javascript
用js实现博客打赏功能
2016/10/24 Javascript
Vue.js结合Ueditor富文本编辑器的实例代码
2017/07/11 Javascript
jQuery实现简单的下拉菜单导航功能示例
2017/12/07 jQuery
JavaScript实现英语单词题库
2019/12/24 Javascript
[51:32]Optic vs Serenity 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
简单实现python画圆功能
2018/01/25 Python
详谈套接字中SO_REUSEPORT和SO_REUSEADDR的区别
2018/04/28 Python
详解django.contirb.auth-认证
2018/07/16 Python
Pandas读取MySQL数据到DataFrame的方法
2018/07/25 Python
python3.7 的新特性详解
2019/07/25 Python
使用 python pyautogui实现鼠标键盘控制功能
2019/08/04 Python
python爬取百度贴吧前1000页内容(requests库面向对象思想实现)
2019/08/10 Python
Python scipy的二维图像卷积运算与图像模糊处理操作示例
2019/09/06 Python
Python udp网络程序实现发送、接收数据功能示例
2019/12/09 Python
python给list排序的简单方法
2020/12/10 Python
纯CSS3实现图片无间断轮播效果
2016/08/25 HTML / CSS
详解HTML5 Canvas标签及基本使用
2020/01/10 HTML / CSS
科沃斯机器人官网商城:Ecovacs
2016/08/29 全球购物
VICHY薇姿美国官方网站:欧洲药房第一的抗衰老品牌
2017/11/22 全球购物
加拿大折扣、优惠券和交易网站:WagJag
2018/02/07 全球购物
介绍一下Java的事务处理
2012/12/07 面试题
机械系大学毕业生推荐信
2013/11/27 职场文书
自荐书封面下载
2013/11/29 职场文书
财务人员求职自荐书范文
2014/02/10 职场文书
《蝙蝠和雷达》教学反思
2014/04/23 职场文书
写给领导的感谢信
2015/01/22 职场文书
Python insert() / append() 用法 Leetcode实战演示
2021/03/31 Python
MySQL数据库如何给表设置约束详解
2022/03/13 MySQL
MySql重置root密码 --skip-grant-tables
2022/04/11 MySQL