Python编写通讯录,支持模糊查询,利用数据库存储

梦魇762459510 2021-11-25 18:29:26
Python 编写 支持 通讯 通讯录

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”,可以输入联系人或者电话号码,查询联系人信息,这里实现了模糊查询以及精确查询。最后,如果你的时间不是很紧张,并且又想快速的python提高,最重要的是不怕吃苦,建议你可以架微信:762459510 ,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~

输入姓名查询:

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 sqlite3
import 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()#关闭数据库

版权声明
本文为[梦魇762459510]所创,转载请带上原文链接,感谢
https://blog.csdn.net/MC_XY/article/details/121540025

  1. [learning notes] Python - pyecarts
  2. Python automated operation and maintenance -- actual combat (I)
  3. Python 多分支语句的三种结构
  4. Python 输出指定范围的闰年
  5. Fatal Python error: init_ fs_ encoding: failed to get the Python codec of the filesystem encoding
  6. Using Python to obtain a video address is as simple as
  7. #yyds干货盘点# 6. Python 元组,不可变的列表,滚雪球学 Python
  8. Yyds Dry Inventory # 6. Python tuples, invariant List, snowball Learning Python
  9. You cannot enter the registration page using Django registration redux
  10. 笨办法学Python第十八天:更多文件操作
  11. Python编辑代码,帮个忙呗
  12. pandas转换object为int失败了,有人能解答吗
  13. python解释题,解释这串,所代表的意思
  14. 用python用while语句写1000以内能被5和9整除的数和个数
  15. #python 我写了一个“饭店”程序
  16. Comprehensive application of Python foundation -- Development
  17. Écrivez en python le nombre et le nombre d'entiers qui peuvent être divisés par 5 et 9 jusqu'à 1000 dans une instruction while
  18. python3.7 FileNotFoundError: [WinError 2] 系统找不到指定的文件。
  19. 最全面的Python重点知识汇总
  20. You can learn Python articles without reading online classes (day 4)
  21. You can learn Python articles without reading online classes (the third day)
  22. python中 我想爬取一个网页,我在cmd中pip list中已经把requests 以及bs4 弄好了 但是他还是提示我没有那个模块
  23. You can learn Python articles without reading online classes (the next day)
  24. You can learn Python articles without reading online classes (the first day)
  25. 在Python和Go项目之后使用Rust的经验分享 - scaleway
  26. 使用PyO3从Python调用 Rust:加速Python
  27. Python 3.7 filenotfounderror: [winerror 2] le système n'a pas pu trouver le fichier spécifié.
  28. Python 一切皆对象
  29. 【Pandas学习笔记01】强大的分析结构化数据的工具集
  30. 求各位亲们可以解答一下嘛,为什么跑不出来呀,大学Python
  31. 【Pandas学习笔记01】强大的分析结构化数据的工具集
  32. python飞机大战如何让飞机始终在界面中,不能跑出界面
  33. Python代码阅读(第63篇):数字奇偶性
  34. python建立⼀個圖形介⾯應⽤(GUI app)
  35. python接口自动化的html格式报告以邮件形式发送展示的原文很丑怎么处理
  36. 针对初学者,我建议你学这 3 个 Python AutoEDA 工具包
  37. #yyds干货盘点#Python-爬虫_urlib一个类型和六个方法
  38. Pour les débutants, je vous recommande d'apprendre ces 3 kits autoeda Python
  39. 我想问python怎么入门嘞?求各路人士
  40. Summary of today's Django lessons: data reverse query triggers error field 'score_ jieshoufankui‘ expected a number but got ‘‘-20211109
  41. 关于#python_while循环的写法#的问题,如何解决?
  42. Python异常处理中异常的种类有哪些?你知道几个?
  43. Python异常處理中异常的種類有哪些?你知道幾個?
  44. Quels sont les types d'exceptions dans la gestion des exceptions python? Combien en savez - vous?
  45. À propos de # Python Comment résoudre le problème de l'écriture de la Boucle while?
  46. Python如何操作system.data.sqlite数据库
  47. python数字游戏,让你欲罢不能
  48. Python中的可迭代对象、迭代器、For循环工作机制、生成器
  49. 一个从没接触过编程的人,如何自学进入Python行业?
  50. 一份超级实用的 Python ”技巧“清单
  51. Python 程序员给上路初学者的3点忠告
  52. 3 conseils pour les débutants sur la route par les programmeurs Python
  53. Une liste de conseils Python super pratiques
  54. Comment quelqu'un qui n'a jamais été en contact avec la programmation peut - il apprendre à entrer dans l'industrie python?
  55. Objets itérables, itérateurs, pour le mécanisme de travail circulaire, générateurs en python
  56. Les Jeux de chiffres Python vous font vous arrêter
  57. Comment Python fonctionne avec la base de données system.data.sqlite
  58. Python之html与markdown互相转换
  59. Python之html與markdown互相轉換
  60. Conversion HTML et markdown de Python