# 데이터 지속성

이 장에서 설명하는 모듈은 파이썬 데이터를 디스크에 지속적인 형태로 저장하는 것을 지원합니다. `pickle`과 `marshal` 모듈은 많은 파이썬 데이터형을 바이트 스트림으로 바꿀 수 있고 그 바이트열로부터 객체를 재생성할 수 있습니다. 다양한 DBM 관련 모듈은 문자열에서 다른 문자열로의 매핑을 저장하는 일군의 해시 기반 파일 형식을 지원합니다.

이 장에서 설명하는 모듈 목록은 다음과 같습니다:

- `pickle` — 파이썬 객체 직렬화
  - 다른 파이썬 모듈과의 관계
    - `marshal` 과의 비교
    - `json` 과의 비교
  - 데이터 스트림 형식
  - 모듈 인터페이스
  - 어떤 것이 피클 되고 역 피클 될 수 있을까요?
  - 클래스 인스턴스 피클링
    - 외부 객체의 지속성
    - 디스패치 테이블
    - 상태 저장 객체 처리
  - 전역 제한하기
  - 성능
  - 예제
- `copyreg` — `pickle` 지원 함수 등록
  - 예제
- `shelve` — 파이썬 객체 지속성
  - 제약 사항
  - 예제
- `marshal` — 내부 파이썬 객체 직렬화
- `dbm` — 유닉스 “데이터베이스” 인터페이스
  - `dbm.gnu` — GNU의 dbm 재해석
  - `dbm.ndbm` — ndbm 기반 인터페이스
  - `dbm.dumb` — 이식성 있는 DBM 구현
- `sqlite3` — SQLite 데이터베이스용 DB-API 2.0 인터페이스
  - 모듈 함수와 상수
  - Connection 객체
  - Cursor 객체
  - Row 객체
  - 예외
  - SQLite 와 파이썬 형
    - 소개
    - 어댑터를 사용하여 SQLite 데이터베이스에 추가 파이썬 형을 저장하기
      - 객체가 스스로 어댑트하도록 하기
      - 어댑터 콜러블 등록하기
    - SQLite 값을 사용자 정의 파이썬 형으로 변환하기
    - 기본 어댑터와 변환기
  - 트랜잭션 제어
  - 효율적으로 `sqlite3` 사용하기
    - 바로 가기 메서드 사용하기
    - 인덱스 대신 이름으로 열 액세스하기
    - 컨텍스트 관리자로 연결 사용하기
  - 일반적인 문제
    - 다중 스레드