본문 바로가기

코딩/DB

SQLite3 - Database 파일 생성, Table 생성

반응형

 

※ 이 글을 쓰는 사람은 SW 비전공자입니다.

※ 개인 공부를 위해 정리하는 글이며, 작성한 코드들은 효율성, 깔끔함(?) 등과는 거리가 멀 수 있습니다.

 

※ 이전 편 링크

1편 : 2021.03.10 - [코딩/DB] - SQLite3 - Database 파일 생성, Table 생성

2편 : 2021.03.12 - [코딩/DB] - SQLite3 - DB Browser for SQLite 설치 및 실행 정리

3편 ; 2021.03.13 - [코딩/DB] - SQLite3 - Table Data 삽입 정리(INSERT)

4편 : 2021.03.15 - [코딩/DB] - SQLite3 - Table Data 조회 방법 정리(SELECT)

5편 : 2021.03.18 - [코딩/DB] - SQLite3 - Table Data 수정 및 삭제 정리(UPDATE, DELETE)


  회사에서 하는 업무 중에 ERP 제품 코드를 채번하고 신규 등록하는 업무가 있다. 기존에는 엑셀로 활용을 했었는데 DB와 파이썬을 활용해서 코드를 신규 채번하고 자동으로 등록하는 프로그램을 제작해보려고 한다. 먼저 DB의 개념과 SQLite3에 대해 간단히 정리해보았다.


1. DBMS : Database Management System

  DBMS란 여러 사용자, 응용 프로그램이 데이터를 조회하거나 저장할 수 있게 도와주는 시스템 및 SW를 지칭한다. 구글링을 해보니 위키독스(파이썬으로 배우는 알고리즘 트레이딩)이라는 책에 도식화가 잘되어있어 참고하였다.

출처 : https://wikidocs.net/5326

 

2. SQLite3 소개

  SQLite3는 기업 서버와 같이 대규모보다는 응용 프로그램과 같이 가벼운 규모(개인)에서 사용하는 Database이다. SQLite3를 잘 활용하면 나중에 스마트폰 앱 개발을 할 때도 활용을 할 수 있다고 하니 잘 알아두면 좋을 것 같다. 소규모 활용 Database이므로 기업과 같이 큰 규모의 Database를 다루려면 MySQL, PostgreSQL을 공부해야 한다. 파이썬을 설치하면 SQLite3 모듈을 내장하고 있어 따로 설치하지 않아도 사용할 수 있다.

  Database를 활용한다는 것은 데이터를 추가하고 조회하거나, 수정, 삭제하는 기능을 활용하는 것이다.  파이썬을 통해 DB를 접근하는 과정을 아래와 같은 과정을 가진다. 데이터 삽입~삭제 부분은 SQL Query를 통해 DB에 접근할 수 있고 DB 파일에 연결하거나 커서를 획득하는 과정은 파이썬에서 Sqlite3 모듈의 함수를 사용하면 된다.

구분 파이썬 코드(또는 쿼리) 비고
DB 파일 연결 con = sqlite.connect("DB파일명") db 파일이 이미 존재하면 연결되고, 없으면 신규 생성됨
DB 커서 획득 cur = con.cursor( ) cursor를 통해 db 접근 가능
데이터 삽입 INSERT DB 쿼리문
데이터 조회 SELECT DB 쿼리문
데이터 수정 UPDATE DB 쿼리문
데이터 삭제 DELETE DB 쿼리문
쿼리문 실행 cur.execute("쿼리문") 쿼리문 실행시 execute( ) 사용
DB 연결 해제 cur.close()
con.close()
cursor 및 DB 파일 연결 해제
DB 백업 하기 con.commit( )  commint 함수를 실행시켜야 DB 반영됨

 

 

3. 파이썬 SQLIte3 사용 : DB 파일 및 Table 생성 방법

  이번 포스팅에서는 DB파일을 생성하고 Table을 생성하는 방법에 대해 정리한다. 

  SQLite3는 위에서도 설명했지만 파이썬을 설치하면 표준 라이브러리에서 제공하는 내장 모듈이다. 먼저 아래와 같이 코드를 SQlite3를 import하고 설치 된 버전을 확인해볼 수 있다.

import sqlite3
print(sqlite3.version) #현 sqlite3 모듈 버전(모듈의 버전)
print(sqlite3.sqlite_version) #현 sqlite의 버전
<결과>
2.6.0
3.30.1

Process finished with exit code 0

 

1) DB 파일 연결(DB 파일을 생성하는 방법)

con = sqlite3.connect("yb_test.db") #yb_test.db 연결

  connect 함수를 통해 db파일을 생성할 수 있다.  코드를 실행하면 파이썬 파일과 같은 폴더에 'yb_test.db'라는 db파일이 신규 생성 된다. 이미 존재하는 db파일이면 connect 함수를 사용하면 이미 작성 된 db 그대로 연결 된다.

< yb_test.db 파일 생성 >

 

2) DB 커서 획득

con = sqlite3.connect("yb_test.db") #yb_test.db 파일 생성
cur = con.cursor() #위 생성한 con에 대한 cursor 생성

  파이썬 SQlite3를 통해 db에 접근하려면 cursor( )를 생성해주어야 한다.  위에서 connect했던 con에 대한 cursor( ) 를  위와 같이 작성해주면 cur 변수를 통해 해당 DB 파일을 제어할 수 있다.

 

 

3) 커서를 통해 해당 DB 파일에 신규 Table 생성

# yb_test라는 table을 생성한느 쿼리문 실행, id_num, name, age
sql = "CREATE TABLE yb_test (id_num INTEGER PRIMARY KEY, name TEXT, age INTEGER)"

# excute()는 cursor(지정 db) 에 대해 쿼리를 실행하는 문장
cur.execute(sql)

#commit은 실행한 쿼리문을 완료시킴
con.commit()

  DB 파일에는 여러개의 Table(표)를 가질 수 있다.  위 구문을 실행하면 yb_test라는 Table이 생성된다. 2)에서 다뤘던 'yb_test.db' 라는 이름과 같은 것이 아니므로 헷갈리지 말 것!! 요약해서 설명해보면 'yb_test.db' 파일 안에 'yb_test'라는 Table이 있는 것이다.

  sql 변수속에 문자열은 Query(쿼리)라고 한다. DB에 데이터를 추가하거나 조회, 수정, 삭제를 하고 싶으면 쿼리문을 실행시켜야 한다. cur.execute(sql)이 그 부분이다. 위에서 획득한 .db 파일 커서를 통해 접근한다.  CREATE TABLE은 신규 Table을 생성하는 쿼리 구문이다. 괄호 안에는 Table 안의 항목을 정의한다.

  마지막 con.commit( ) 은 위 표에서도 설명했지만 .db 파일에 반영하려면 반드시 추가해줘야 한다. 넣지 않으면 db파일이 수정되지 않는다. 만약, con.commit( ) 을 쓰지 않고 .db 파일에 반영하려면 아래와 같이 con 을 선언하면 된다.

con = sqlite3.connect("yb_test.db", isolation_level=None)
# 끝에 commit을 안해도 isolation_level 옵션을 넣어주면 db 반영됨

 

 


※참고사항 :  한 DB 안에 Table 을 여러개 만들어야 할 경우 아래와 같이 IF 를 포함한 쿼리문을 사용하기도 한다

   CREATE TABLE IF NOT EXISTS 'yb_test'( )
    :  'yb_test'라는 이름을 가진 Table이 없다면 새로 생성하라는 조건 쿼리문이다.

sql = "CREATE TABLE IF NOT EXISTS yb_test(id_num INTEGER PRIMARY KEY, name TEXT, age INTEGER)"
cur.execute(sql)
con.commit()

 


  아무튼 3)과 같이 코드를 작성하여 실행하면 아래와 같이 yb_test 라는 table이 생성된 것을 확인할 수 있다. 
아래 프로그램은 'DB Browserfor SQLite' 라는 프로그램으로 db 파일을 GUI로 쉽게 보게 해주는 프로그램이다. 이 프로그램에 대해서는 다음 포스팅에서 설치하는 방법을 정리해보려고 한다.

< DB Browser 프로그램 확인 - yb_test.db >

 

728x90