python关于通讯录模型_原创:Python编写通讯录,支持模糊查询,利用数据库存储...

本文介绍了如何使用Python构建一个基于SQLite3的通讯录模型,支持通过姓名或电话号码进行模糊查询,并提供了添加、删除、查询全部联系人等功能。用户输入指令进行操作,例如添加联系人信息、删除指定联系人或查询所有信息。
摘要由CSDN通过智能技术生成

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

#打开本地数据库用于存储用户信息

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值