侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

Python编写通讯录通过数据库存储实现模糊查询功能

Python  /  管理员 发布于 7年前   231

1.要求

数据库存储通讯录,要求按姓名/电话号码查询,查询条件只有一个输入入口,自动识别输入的是姓名还是号码,允许模糊查询。

2.实现功能

可通过输入指令进行操作。

(1)首先输入“add”,可以对通讯录进行添加联系人信息。

sql1 ='insert into TA(ID,NAME,AGE,ADDRESS,TELENUMBER)'sql1 += 'values("%d","%s","%d","%s","%s");' % (ID,name, age, address, telenumber)conn.execute(sql1)conn.commit() # 提交,否则无法保存

(2)输入“delete”,可以删除指定的联系人信息。

输入姓名删除:

cursor = c.execute( "SELECT name from TA where name = '%s';" %i)

输入电话号码删除:

cursor = c.execute( "SELECT name from TA where telenumber= '%s';" % i)

(3)输入“search”,可以输入联系人或者电话号码,查询联系人信息,这里实现了模糊查询以及精确查询。

输入姓名查询:

sql1 = "SELECT id,name,age, address, telenumber from TA where telenumber like '%" + i +"%'"cursor = c.execute(sql1)

输入电话号码查询:

sql1= "SELECT id,name,age, address, telenumber from TA where name like '%" +i+"%'"cursor = c.execute(sql1)

(4)输入“searchall”,查询全部联系人信息。

cursor = c.execute( "SELECT id, name, age, address, telenumber from TA" )

3.数据库sqlite3

Python自带一个轻量级的关系型数据库sqlite。这一数据库使用SQL语言。sqlite作为后端数据库,可以搭配Python建网站,或者制作有数据存储需求的工具。sqlLite还在其它领域有广泛的应用,比如HTML5和移动端。Python标准库中的sqlite3提供该数据库的接口。因此此次使用了sqlite3数据库存储通讯录的联系人信息。

源码:

import sqlite3import re#打开本地数据库用于存储用户信息conn = sqlite3.connect('mysql_telephone_book.db')c = conn.cursor()#在该数据库下创建表,创建表的这段代码在第一次执行后需要注释掉,否则再次执行程序会一直提示:该表已存在'''c.execute("CREATE TABLE TA    (ID INT PRIMARY KEY   NOT NULL,    NAME      TEXT  NOT NULL,    AGE      INT   NOT NULL,    ADDRESS    CHAR(50),    TELENUMBER     TEXT);")'''conn.commit()#提交当前的事务#增加用户信息def insert():  global conn  c = conn.cursor()  ID=int(input("请输入id号:"))  name=input("请输入姓名:")  age=int(input("请输入年龄:"))  address=input("请输入地址:")  telenumber=input("请输入电话号码:")  sql1 = 'insert into TA(ID,NAME,AGE,ADDRESS,TELENUMBER)'  sql1 += 'values("%d","%s","%d","%s","%s");' % (ID,name, age, address, telenumber)  conn.execute(sql1)  conn.commit()#提交,否则无法保存  print("提交成功!!")#删除用户信息def delete():  global conn  c=conn.cursor()  i = input("请输入所要删除的联系人姓名或电话号码:")  if len(i) < 11:    cursor = c.execute("SELECT name from TA where name = '%s';"%i)    for row in cursor:      if i == row[0]:        c.execute("DELETE from TA where name ='%s';"%i)        conn.commit()        print("成功删除联系人信息!!")        break    else:      print("该联系人不存在!!")  else :    cursor = c.execute("SELECT name from TA where telenumber= '%s';" % i)    for row in cursor:      if i == row[0]:        c.execute("DELETE from TA where telenumber ='%s';" % i)        conn.commit()        print("成功删除联系人信息!!")        break    else:      print("该电话号码错误!!")#查询用户信息def search():  global conn  c = conn.cursor()  i = input("请输入所要查询的联系人姓名或电话号码:")  if i.isnumeric():    sql1 = "SELECT id,name,age, address, telenumber from TA where telenumber like '%" + i + "%'"    cursor = c.execute(sql1)    res=cursor.fetchall()    if len(res)!=0:      for row in res:        print("id:{0}".format(row[0]))        print("姓名:{0}".format(row[1]))        print("年龄:{0}".format(row[2]))        print("地址:{0}".format(row[3]))        print("电话号码:{0}".format(row[4]))    else:      print("无此电话号码!!")  else:    sql1="SELECT id,name,age, address, telenumber from TA where name like '%"+i+"%'"    cursor = c.execute(sql1)    res=cursor.fetchall()    if len(res) == 0:      print("该联系人不存在!!")    else:      for row in res:        print("id:{0}".format(row[0]))        print("姓名:{0}".format(row[1]))        print("年龄:{0}".format(row[2]))        print("地址:{0}".format(row[3]))        print("电话号码:{0}".format(row[4]))#显示所有用户信息def showall():  global conn  c = conn.cursor()  cursor = c.execute("SELECT id, name, age, address, telenumber from TA")  for row in cursor:    print("id:{0}".format(row[0]))    print("姓名:{0}".format(row[1]))    print("年龄:{0}".format(row[2]))    print("地址:{0}".format(row[3]))    print("电话号码:{0}".format(row[4]))print("指令如下:\n1.输入\"add\"为通讯录添加联系人信息\n2.输入\"delete\"删除通讯录里的指定联系人信息 \n3.输入\"searchall\"查询通讯录里的所有用户 \n4.输入\"search\"根据姓名或手机号码查找信息 ")while 1:  temp = input("请输入指令:")  if temp == "add":    insert()    print("添加成功!")    temp1=input("是否继续操作通讯录?(y or n)")    if temp1=="n":      print("成功退出!!")      break    else:      continue  elif temp=="delete":    delete()    temp1 = input("是否继续操作通讯录?(y or n)")    if temp1 == "n":      print("成功退出!!")      break    else:      continue  elif temp=="searchall":    showall()    temp1 = input("是否想继续操作通讯录?(y or n)")    if temp1 == "n":      print("成功退出!!")      break    else:      continue  elif temp=="search":    search()    temp1 = input("您是否想继续操作通讯录?(y or n)")    if temp1 == "n":      print("成功退出!!")      break    else:      continue  else:    print("请输入正确指令!!")conn.close()#关闭数据库

总结

以上所述是小编给大家介绍的Python编写通讯录通过数据库存储实现模糊查询功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!


  • 上一条:
    python实现批量nii文件转换为png图像
    下一条:
    python使用pandas处理excel文件转为csv文件的方法示例
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在python语言中Flask框架的学习及简单功能示例(0个评论)
    • 在Python语言中实现GUI全屏倒计时代码示例(0个评论)
    • Python + zipfile库实现zip文件解压自动化脚本示例(0个评论)
    • python爬虫BeautifulSoup快速抓取网站图片(1个评论)
    • vscode 配置 python3开发环境的方法(0个评论)
    • 近期文章
    • 智能合约Solidity学习CryptoZombie第四课:僵尸作战系统(0个评论)
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2018-04
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2022-01
    • 2023-07
    • 2023-10
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客