Ai
2 Star 0 Fork 1

jackfrued/python2004

Create your Gitee Account
Explore and code with more than 13.5 million developers,Free private repositories !:)
Sign up
文件
This repository doesn't specify license. Please pay attention to the specific project description and its upstream code dependency when using it.
Clone or Download
example14.py 5.77 KB
Copy Edit Raw Blame History
jackfrued authored 2020-11-23 12:06 +08:00 . 通讯录参考代码
"""
-- 创建名为address的数据库
create database address default charset utf8;
-- 切换到address数据库
use address;
-- 创建联系人表tb_contacter
create table tb_contacter
(
conid int auto_increment comment '编号',
conname varchar(31) not null comment '姓名',
contel varchar(15) default '' comment '电话',
conemail varchar(255) default'' comment '邮箱',
primary key (conid)
);
"""
import MySQLdb
from MySQLdb.cursors import DictCursor
INSERT_CONTACTER = """
insert into tb_contacter (conname, contel, conemail)
values (%s, %s, %s)
"""
DELETE_CONTACTER = """
delete from tb_contacter where conid=%s
"""
UPDATE_CONTACTER = """
update tb_contacter set conname=%s, contel=%s, conemail=%s
where conid=%s
"""
SELECT_CONTACTERS = """
select conid as id, conname as name, contel as tel, conemail as email
from tb_contacter limit %s offset %s
"""
SELECT_CONTACTERS_BY_NAME = """
select conid as id, conname as name, contel as tel, conemail as email
from tb_contacter where conname like %s
"""
COUNT_CONTACTERS = """
select count(conid) as total from tb_contacter
"""
class Contacter(object):
def __init__(self, id, name, tel, email):
self.id = id
self.name = name
self.tel = tel
self.email = email
def input_contacter_info():
name = input('姓名: ')
tel = input('手机: ')
email = input('邮箱: ')
return name, tel, email
def add_new_contacter(con):
name, tel, email = input_contacter_info()
try:
with con.cursor() as cursor:
if cursor.execute(INSERT_CONTACTER,
(name, tel, email)) == 1:
print('添加联系人成功!')
except MySQLdb.MySQLError as err:
print(err)
print('添加联系人失败!')
def delete_contacter(con, contacter):
try:
with con.cursor() as cursor:
if cursor.execute(DELETE_CONTACTER, (contacter.id, )) == 1:
print('联系人已经删除!')
except MySQLdb.MySQLError as err:
print(err)
print('删除联系人失败!')
def edit_contacter_info(con, contacter):
name, tel, email = input_contacter_info()
contacter.name = name or contacter.name
contacter.tel = tel or contacter.tel
contacter.email = email or contacter.email
try:
with con.cursor() as cursor:
if cursor.execute(UPDATE_CONTACTER,
(contacter.name, contacter.tel,
contacter.email, contacter.id)) == 1:
print('联系人信息已经更新!')
except MySQLdb.MySQLError as err:
print(err)
print('更新联系人信息失败!')
def show_contacter_detail(con, contacter):
print('姓名:', contacter.name)
print('手机号:', contacter.tel)
print('邮箱:', contacter.email)
choice = input('是否编辑联系人信息?(yes|no)')
if choice == 'yes':
edit_contacter_info(con, contacter)
else:
choice = input('是否删除联系人信息?(yes|no)')
if choice == 'yes':
delete_contacter(con, contacter)
def show_search_result(con, cursor):
contacters_list = []
for index, row in enumerate(cursor.fetchall()):
contacter = Contacter(**row)
contacters_list.append(contacter)
print('[%d]: %s' % (index, contacter.name))
if len(contacters_list) > 0:
choice = input('是否查看联系人详情?(yes|no)')
if choice.lower() == 'yes':
index = int(input('请输入编号: '))
if 0 <= index < cursor.rowcount:
show_contacter_detail(con, contacters_list[index])
def find_all_contacters(con):
page, size = 1, 5
try:
with con.cursor() as cursor:
cursor.execute(COUNT_CONTACTERS)
total = cursor.fetchone()['total']
while True:
cursor.execute(SELECT_CONTACTERS,
(size, (page - 1) * size))
show_search_result(con, cursor)
if page * size < total:
choice = input('继续查看下一页?(yes|no)')
if choice.lower() == 'yes':
page += 1
else:
break
else:
print('没有下一页记录!')
break
except MySQLdb.MySQLError as err:
print(err)
def find_contacters_by_name(con):
name = input('联系人姓名: ')
try:
with con.cursor() as cursor:
cursor.execute(SELECT_CONTACTERS_BY_NAME,
('%' + name + '%', ))
show_search_result(con, cursor)
except MySQLdb.MySQLError as err:
print(err)
def find_contacters(con):
while True:
print('1. 查看所有联系人')
print('2. 搜索联系人')
print('3. 退出查找')
choice = int(input('请输入: '))
if choice == 1:
find_all_contacters(con)
elif choice == 2:
find_contacters_by_name(con)
elif choice == 3:
break
def main():
con = MySQLdb.connect(host='47.104.31.138', port=3306,
user='root', passwd='Luohao.618',
db='address', charset='utf8',
autocommit=True,
cursorclass=DictCursor)
while True:
print('=====通讯录=====')
print('1. 新建联系人')
print('2. 查找联系人')
print('3. 退出系统')
print('===============')
choice = int(input('请选择: '))
if choice == 1:
add_new_contacter(con)
elif choice == 2:
find_contacters(con)
elif choice == 3:
con.close()
print('谢谢使用, 再见!')
break
if __name__ == '__main__':
main()
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/jackfrued/python2004.git
git@gitee.com:jackfrued/python2004.git
jackfrued
python2004
python2004
master

Search