美文网首页石头剪刀布Python学习分享大数据 爬虫Python AI Sql
Python编写通讯录,支持模糊查询,利用数据库存储!

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

作者: 烟雨丿丶蓝 | 来源:发表于2019-07-18 22:35 被阅读15次

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

相关文章

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

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

  • MySQl优化学习笔记(五)存储引擎

    首先,我们用查看数据库支持的存储引擎(show ENGINES;语句)查询目前数据库支持的所有的存储引擎。查询结果...

  • mysql之搜索引擎

    1、查看当前数据库默认引擎 2、查询各表引擎 3、查询当前数据库所支持到引擎 4、查询哪些存储引擎支持事物处理 5...

  • Mongodb单节点部署以及简单使用

    mongodb是一个分布式文件存储数据库,有C语言编写,它支持数据结构非常松散,类似json格式,最大特点就是查询...

  • 像查询DB一样查询redis

    设计目的:希望查询redis缓存像查询数据库一样,支持多条件组合查询、模糊查询、区间查询、多字段排序查询、分页查询...

  • MySQL中有哪些存储引擎?

    查询当前MySQL数据库支持的哪些存储引擎的方法: MySQL5.5以后的版本都支持以上的九种存储引擎InnoDB...

  • SQL模糊查询法

    SQL模糊查询语法LIKE 有关SQL模糊查询 执行 数据库查询时,有完整查询和模糊查询之分。 一般模糊语句如下:...

  • redis

    redis 是一个用c语言编写的高性能k/v存储数据库,支持持久存储,是非关系型数据库。redis默认使用TCP的...

  • 2018-11-23

    python实验的编写字典的程序需要利用列表进行查询,并且需要用只写形式进行添加

  • 个人项目经历

    1、python Django框架,编写web后端,使用postgre数据库存储前段提交的数据 2、L4全局规划,...

网友评论

    本文标题:Python编写通讯录,支持模糊查询,利用数据库存储!

    本文链接:https://www.haomeiwen.com/subject/nwxdlctx.html