상세 컨텐츠

본문 제목

Step1 - DB(SQLite3)

본문

반응형

도서 DATA를 저장하기 위해 필요한 DB를 구축하기 위해 Oracle, MySQL 등이 있지만, 추가적인 설치를 줄이기 위해 python 내부에 포함되어 있는 SQLite3 를 사용해볼 예정이다.

 

기본적인 SQL문은 동일하겠지만 몇 가지 참조를 위해 기본만 훝어보기로 했다.

 

01. DB 생성

import sqlite3

# DB생성 및 Auto Commit, RollBack
conn = sqlite3.connect(r'.\book_manager_database.db', isolation_level=None) # 해당 경로에 book_manager_database.db DB파일이 생성된다.

 : DB 생성은 1줄의 코딩으로 가능하다. 

   처음엔 해당 파일이 있는지 확인하는 조건문을 넣어 볼까 생각했지만, 조건문이 없어도 동일한 기능이 적용되고 있었다.

     - 해당 경로에 db 파일이 없을 경우, 신규 생성. 

     - 해당 경로에 db 파일이 있을 경우, 해당 db 연결. 

 

  : 사용간의 편의를 위해 conn 객체를 생성한다. update, delete 등의 기능을 적용하기에 앞서 추가적인 확인 과정이 필요한데 이를 commit 이라고한다. 정확한 작업이 이뤄진다면 commit을 진행하고, 잘못된 작업이 진행되면 rollback을 통해 취소시킬 수 있다.

    하지만 프로그램내에서 적용할 때에는 위 과정이 번거로울 수 있기 때문에 commit을 매번 입력하는 것보다 자동으로 commit을 진행해 줄 수 있는데, 이 기능이 isolation_level 이다. 위와 같이 isolation_level=None 을 적용할 경우, 해당 객체를 통해 진행된 sql 문은 commit 까지 진행이 된다.

 

 

 

02. 커서(courer)

import sqlite3

# DB생성 및 Auto Commit, RollBack
conn = sqlite3.connect(r'.\book_manager_database.db', isolation_level=None) # 해당 경로에 book_manager_database.db DB파일이 생성된다.

# 커서(Cursor)의 이용
global cursor
cursor = conn.cursor()
print('Cursor Tppe : ', type(cursor))    # Cursor Tppe :

 : sql문을 db에 적용하기 위해 커서(cursor)를 이용한다. 커서를 다른 함수에서도 사용하기 위해 전역변수로 선언하였다.

출력을 해보면 Cursor Tppe이  <class 'sqlite3.Cursor'> 로 나타난다.

 

03. create table

  : db는 여러개의 table로 구성되고, table은 항목명인 column(컬럼, 열)과 row(행)으로 구성된다. db에 대한 기본 내용을 모른다면 excel과 비교 시, table->sheet, column->x축(A열, B열 등), row->y축(1열, 2열 등) 과 유사한 모양을 가지고 있다.

 

######################################################################
# 테이블 생성(Data Type : TEXT, NUMERIC INTEGER, REAL, BLOB)

# 도서 기준(출판사 정보)
cursor.execute('CREATE TABLE IF NOT EXISTS publisher(pub_id integer primary key autoincrement, publisher_name text unique, \
    email text, tel_no text, website text, address text)')

sqlite에서 지원하는 Data Type은 TEXT, NUMERIC INTEGER, REAL, BLOB 을 지원한다. Oracle, MySQL 등과 같은 DB와는 달리 DATE Type을 지원하지 않아 datetime 모듈 등을 이용하여 TEXT 타입으로 작성한다.

도서관리 프로그램은 크게 2가지 요소로 기획하였다.

 1. 관리자 : 도서관(서점)에서의 도서 관리 또는 정보

    - 도서의 등록

 

 2. 사용자 : 도서 기준에서의 관리 또는 정보

    - 대여 가능 여부 및 대여 상태 관련 정보 

 

위 2가지 중, 관리자-도서 등록을 위해 출판사를 기준으로 도서를 등록할 예정이다.

 

1. 출판사 등록 -> 2. 도서 분류별 등록 -> 3. 각 도서별 등록

 

과정을 진행할 예정이고, 출판사를 등록할 수 있는 DB를 먼저 생성해 보면 위의 코딩과 같다.

 

publisher 테이블의 유무 상태를 확인 후, table을 생성하고, 생성 할 때는 (컬럼명 type option)의 형태로 구성한다.

 

primary key 는 pub_id에 할당해주고, 추가로 데이터가 입력될 떄 자동으로 처리할 수 있도록 autoincrement를 옵션으로 추가하였다. oracle 의 sequence와 같은 기능으로 유사한 툴을 다룰 수 있다면 구글등을 통해 원하는 기능을 쉽게 검색 가능하다.

 

 

 

반응형

관련글 더보기

댓글 영역