forked from jackfrued/Python-100-Days
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
197 lines (169 loc) · 5.75 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
"""
-- 创建名为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 pymysql
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 pymysql.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 pymysql.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 pymysql.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 pymysql.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 pymysql.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 = pymysql.connect(host='120.77.222.217', port=3306,
user='root', passwd='123456',
db='address', charset='utf8',
autocommit=True,
cursorclass=pymysql.cursors.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()