pickle ๋ชจ๋์ ์ฌ์ฉํ ์ง๋ ฌํ(Serialization)
- ์ง๋ ฌํ : pickle.dump(data,fout)
- ์ญ์ง๋ ฌํ : pickle.load(fin)
์ง๋ ฌํ๋ฅผ ์ด์ฉํ CRUD
- Emp ํด๋์ค
- ๋ฆฌ์คํธ์ Emp๊ฐ์ฒด๋ฅผ ์ ์ฅํ๊ณ ๋ฆฌ์คํธ๋ฅผ ์ง๋ ฌํ
# Emp (id, name, dept, phone)
# ์ถ๊ฐ(a), ๋ชฉ๋ก(s), ๊ฒ์(f), ์์ (u), ์ญ์ (d), ์ข
๋ฃ(x)
1
2
3
4
5
6
7
8
9
10
11
12
13
|
import pickle
class Emp:
def __init__(self, id=None, name=None, dept=None, phone=None):
self.id = id
self.name = name
self.dept = dept
self.phone = phone
def __str__(self):
return '%s\t%s\t%s\t%s'%(self.id,self.name,self.dept,self.phone)
def __eq__(self, other):
return self.id==other.id
|
cs |
1
2
|
emp_list = []
|
cs |
๊ธ๋ก๋ฒ ์์น์ ์ ์ธํ๋ค. ๋ฉ์๋ ๋ฐ์ ์ ์ธ
1
2
3
4
5
|
def menu():
print()
msg = '์ถ๊ฐ(a), ๋ชฉ๋ก(s), ๊ฒ์(f), ์์ (u), ์ญ์ (d), ์ข
๋ฃ(x):'
m_in = input(msg).strip()
return m_in
|
cs |
1
2
3
4
5
6
7
8
|
def input_emp():
sinput = input('id name dept phone:').strip()
in_list = sinput.split()
if len(in_list)<4:
print('์ฌ์์ ๋ณด์
๋ ฅ ์ค๋ฅ')
return None
id,name,dept,phone = in_list
return Emp(id=id, name=name, dept=dept, phone=phone)
|
cs |
1
2
3
4
5
|
import pickle
def overwrite(emp_list):
with open('C:/Users/parkj/1Python_Projects/text/pickle_emp_crud.txt', 'wb') as fout:
pickle.dump(emp_list, fout)
print('์ง๋ ฌํ ์ฑ๊ณต')
|
cs |
1
2
3
4
5
|
def add():
emp = input_emp()
emp_list.append(emp)
overwrite(emp_list)
print('์ฌ์์ ๋ณด ์ถ๊ฐ ์ฑ๊ณต')
|
cs |
1
2
3
4
5
6
|
import pickle
def load_list():
global emp_list
with open('C:/Users/parkj/1Python_Projects/text/pickle_emp_crud.txt', 'rb') as fin:
emp_list = pickle.load(fin)
emp_list = sorted(emp_list, key=lambda e:e.id)
|
cs |
1
2
3
4
5
6
7
|
import pickle
def show_list():
load_list()
print()
for e in emp_list:
print(e)
|
cs |
1
2
3
4
5
6
7
8
9
10
11
|
def find(label):
key_id = input(label+':').strip()
key_emp = Emp(id=key_id)
load_list()
found = None
if key_emp in emp_list:
idx = emp_list.index(key_emp)
found = emp_list[idx]
if found is None:
print('๊ฒ์๊ฒฐ๊ณผ๊ฐ ์์ต๋๋ค')
return found
|
cs |
1
2
3
4
5
6
7
8
|
def update():
up_emp = find('์์ ํ ์ฌ์๋ฒํธ')
if up_emp is None:
return
new_phone = input('์ ์ ํ๋ฒํธ:').strip()
up_emp.phone = new_phone
overwrite(emp_list)
print('์ฌ์์ ๋ณด ์์ ์ฑ๊ณต')
|
cs |
1
2
3
4
5
6
7
8
9
|
def delete():
del_emp = find('์ญ์ ํ ์ฌ์๋ฒํธ')
load_list()
if del_emp in emp_list:
emp_list.remove(del_emp)
overwrite(emp_list)
print('์ฌ์์ ๋ณด ์ญ์ ์ฑ๊ณต')
else:
print('์ฌ์์ ๋ณด ์ญ์ ์คํจ')
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
while True:
m_in = menu()
if m_in == 'a':
add()
elif m_in=='s':
show_list()
elif m_in=='f':
print(find('๊ฒ์ํ ์ฌ์๋ฒํธ'))
elif m_in=='u':
update()
elif m_in=='d':
delete()
elif m_in=='x':
break
else:
print('๋ฉ๋ด์
๋ ฅ ์ค๋ฅ')
print('---------------------ํ๋ก๊ทธ๋จ ์ข
๋ฃ---------------------')
|
cs |
์คํ๊ฒฐ๊ณผ:
์์ธ์ฒ๋ฆฌ
๋๊ธ