Python编写通讯录通过数据库存储实现模糊查询功能
1.要求
数据库存储通讯录,要求按姓名/电话号码查询,查询条件只有一个输入入口,自动识别输入的是姓名还是号码,允许模糊查询。
2.实现功能
可通过输入指令进行操作。
(1)首先输入“add”,可以对通讯录进行添加联系人信息。
sql1= 'insertintoTA(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("SELECTnamefromTAwherename='%s';"%i)
输入电话号码删除:
cursor=c.execute("SELECTnamefromTAwheretelenumber='%s';"%i)
(3)输入“search”,可以输入联系人或者电话号码,查询联系人信息,这里实现了模糊查询以及精确查询。
输入姓名查询:
sql1="SELECTid,name,age,address,telenumberfromTAwheretelenumberlike'%"+i+ "%'" cursor=c.execute(sql1)
输入电话号码查询:
sql1="SELECTid,name,age,address,telenumberfromTAwherenamelike'%"+i+ "%'" cursor=c.execute(sql1)
(4)输入“searchall”,查询全部联系人信息。
cursor=c.execute("SELECTid,name,age,address,telenumberfromTA")
3.数据库sqlite3
Python自带一个轻量级的关系型数据库sqlite。这一数据库使用SQL语言。sqlite作为后端数据库,可以搭配Python建网站,或者制作有数据存储需求的工具。sqlLite还在其它领域有广泛的应用,比如HTML5和移动端。Python标准库中的sqlite3提供该数据库的接口。因此此次使用了sqlite3数据库存储通讯录的联系人信息。
源码:
importsqlite3 importre #打开本地数据库用于存储用户信息 conn=sqlite3.connect('mysql_telephone_book.db') c=conn.cursor() #在该数据库下创建表,创建表的这段代码在第一次执行后需要注释掉,否则再次执行程序会一直提示:该表已存在 '''c.execute("CREATETABLETA (IDINTPRIMARYKEYNOTNULL, NAMETEXTNOTNULL, AGEINTNOTNULL, ADDRESSCHAR(50), TELENUMBERTEXT);")''' conn.commit()#提交当前的事务 #增加用户信息 definsert(): globalconn c=conn.cursor() ID=int(input("请输入id号:")) name=input("请输入姓名:") age=int(input("请输入年龄:")) address=input("请输入地址:") telenumber=input("请输入电话号码:") sql1='insertintoTA(ID,NAME,AGE,ADDRESS,TELENUMBER)' sql1+='values("%d","%s","%d","%s","%s");'%(ID,name,age,address,telenumber) conn.execute(sql1) conn.commit()#提交,否则无法保存 print("提交成功!!") #删除用户信息 defdelete(): globalconn c=conn.cursor() i=input("请输入所要删除的联系人姓名或电话号码:") iflen(i)<11: cursor=c.execute("SELECTnamefromTAwherename='%s';"%i) forrowincursor: ifi==row[0]: c.execute("DELETEfromTAwherename='%s';"%i) conn.commit() print("成功删除联系人信息!!") break else: print("该联系人不存在!!") else: cursor=c.execute("SELECTnamefromTAwheretelenumber='%s';"%i) forrowincursor: ifi==row[0]: c.execute("DELETEfromTAwheretelenumber='%s';"%i) conn.commit() print("成功删除联系人信息!!") break else: print("该电话号码错误!!") #查询用户信息 defsearch(): globalconn c=conn.cursor() i=input("请输入所要查询的联系人姓名或电话号码:") ifi.isnumeric(): sql1="SELECTid,name,age,address,telenumberfromTAwheretelenumberlike'%"+i+"%'" cursor=c.execute(sql1) res=cursor.fetchall() iflen(res)!=0: forrowinres: 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="SELECTid,name,age,address,telenumberfromTAwherenamelike'%"+i+"%'" cursor=c.execute(sql1) res=cursor.fetchall() iflen(res)==0: print("该联系人不存在!!") else: forrowinres: 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])) #显示所有用户信息 defshowall(): globalconn c=conn.cursor() cursor=c.execute("SELECTid,name,age,address,telenumberfromTA") forrowincursor: 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\"根据姓名或手机号码查找信息") while1: temp=input("请输入指令:") iftemp=="add": insert() print("添加成功!") temp1=input("是否继续操作通讯录?(yorn)") iftemp1=="n": print("成功退出!!") break else: continue eliftemp=="delete": delete() temp1=input("是否继续操作通讯录?(yorn)") iftemp1=="n": print("成功退出!!") break else: continue eliftemp=="searchall": showall() temp1=input("是否想继续操作通讯录?(yorn)") iftemp1=="n": print("成功退出!!") break else: continue eliftemp=="search": search() temp1=input("您是否想继续操作通讯录?(yorn)") iftemp1=="n": print("成功退出!!") break else: continue else: print("请输入正确指令!!") conn.close()#关闭数据库
总结
以上所述是小编给大家介绍的Python编写通讯录通过数据库存储实现模糊查询功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!