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 sqlite3
          
           import re
        
在此推荐小编创建的Python学习交流群:835017344,这里是python学习者聚集地,有大牛答疑,有资源共享!有想学习python编程的,或是转行,或是大学生,还有工作中想提升自己能力的,正在学习的小伙伴欢迎加入学习。
打开本地数据库用于存储用户信息
          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()#关闭数据库
        

