14.7 피클링
dbm의 제약 때문에 키와 값은 문자열이나 바이트만 써야 한다. 다른 타입을 사용하려 하면 오류가 발생한다.
pickle 모듈을 사용하면 이를 해결할 수 있다. pickle 모듈은 어떤 타입의 객체라도 데이터베이스 저장에 적합한 문자열로 변환하고, 변환된 문자열을 다시 객체로 변환할 수 있다.
pickle.dumps는 객체를 인수로 받아서 문자열 표현을 반환한다(dumps는 “dump string”의 약어다).
>>> import pickle
>>> t = [1, 2, 3]
>>> pickle.dumps(t)
b'\x80\x03]q\x00(K\x01K\x02K\x03e.'
사람이 읽을 수 있는 형식은 아니지만, pickle이 이를 해석하는 것은 쉽다. pickle.loads(“로드 문자열”)은 객체를 재구성한다.
>>> t1 = [1, 2, 3]
>>> s = pickle.dumps(t1)
>>> t2 = pickle.loads(s)
>>> t2
[1, 2, 3]