源码:
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()#关闭数据库
总结
以上所述是小编给大家介绍的Python编写通讯录通过数据库存储实现模糊查询功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
标签:SQLite
相关阅读 >>
ios app中数据管理框架core data的基本数据操作教程
android 使用vitamio打造自己的万能播放器(4)——本地播放(快捷搜索、数据存储)
python实现将Sqlite中的数据直接输出为cvs的方法示例
更多相关阅读请进入《Sqlite》频道 >>

数据库系统概念 第6版
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。