파이썬 SQLite3 사용법


파이썬 SQLite3 사용법
Python 에서 SQLite3 모듈 사용 방법에 대해서 설명드립니다. DB 생성, 테이블 생성, 데이터 Insert, Update, Delete 등의 쿼리와 데이터 Select 조회 방법 등을 예제 소스코드를 이용하여 설명드립니다.

파이썬 SQLite3 사용법

SQLite3 패키지 설치

Python에서는 추가 패키지 없이 sliqte3 모듈을 사용가능합니다. 하지만 SQLite3 명령어 등을 설치하면 생성된 데이터베이스 파일을 보다 효과적으로 설치 할 수 있습니다. 우분투에서는 다음 명령어로 SQLite3 패키지를 설치 할 수 있습니다.

$ sudo apt install sqlite3

아래의 예제 소스코드는 모두 아래의 코드를 이용하여 sqlite3 모듈을 import 한 것으로 가정하여 설명드리도록 하겠습니다.

import sqlite3

파이썬 SQLite3 사용법

SQLite3 DB 생성 및 연결

SQLite 데이터베이스 파일을 생성하기 위해서는 아래와 같은 예제 코드를 사용합니다.

conn = sqlite3.connect("test.db")

위의 예제는 SQLite3 데이터베이스에 연결 하는 것으로, 기존에 test.db 파일이 존재하지 않을 경우 새로운 파일을 생성하고 기존 파일이 존재하면 기존 파일을 읽습니다.

아래와 같이 DB 파일을 생성하지 않고, 메모리 기반으로 데이터 베이스를 생성할 수도 있지만 프로그램이 종료되면 데이터가 유실된 다는 점에서 주의 하셔야합니다.

conn = sqlite3.connect(':memory:')

DB 연결 종료

데이터 베이스 사용이 종료되면 아래의 코드를 이용하여 연결을 종료하면 됩니다.

conn.close()

테이블 생성

쿼리를 실행하기 위해서는 execute 명령어를 사용하는데, 이 명령어를 이용하여 테이블을 생성할 수 있습니다.
가장 먼저 아래의 소스코드로 테이블을 생성해 주시기 바랍니다.

cur = conn.cursor()
cur.execute("create table test (name text, score int)")

데이터 Insert

데이터를 저장할때에도 동일하게 execute 함수를 사용할 수도 있지만, 여러개의 데이터를 저장할 때에는 executemany 함수가 사용될 수 있습니다.

execute

아래의 내용은 Insert 구문을 SQL 쿼리로 작성 한 에제입니다.

cur.execute("insert into test values ('a', 100)")
conn.commit()

아래와 Tuple 데이터를 이용하여 동적으로 Insert 쿼리를 작성하여 실행할 수도 있습니다.

cur.execute("insert into test values (?, ?)", ('b', 1))
 conn.commit()

다음과 같이 dict 데이터를 이용하여, 저장될 파라미터를 저장하는 코드를 작성 할 수 있습니다.

cur.execute("insert into test values (:name, :score)", {'name':'c', 'score':99})
 conn.commit()

executemany

여러개의 데이터를 저장 할 경우 executemany 함수를 사용하여 저장할 수 있습니다.
다음의 에제는 executemany 함수의 사용 예제를 나타납니다.

data = [
 ('d', 93),
 ('e', 11)
]   

cur.executemany("insert into test values (?, ?)", data)

데이터 Select

다음 내용은 저장된 데이터를 읽어오는 예제 입니다.

cur.execute('select * from test')
for row in cur:
    print(row)

cur.execute("select * from test")
rows = cur.fetchall()

print (rows)

실행 결과는 다음과 같습니다.

(u'a', 100)
(u'b', 1)
(u'c', 99)
(u'd', 93)
(u'e', 11)
[(u'a', 100), (u'b', 1), (u'c', 99), (u'd', 93), (u'e', 11)]

for 함수를 통해서 하나씩 데이터를 fetch 하여 처리 할 수도 있고, fetchall 함수를 이용하여 모든 데이터를 한번에 변수에 저장할 수도 있습니다.

데이터 Update, Delete

아래의 내용은 데이터를 Update 하거나 Delete하는 예제입니다.

Update 예제

cur.execute("update test set score=11 where name='b'")
conn.commit()

Delete 예제

cur.execute("delete from test where name='e'")
conn.commit()

데이터가 수정, 삭제 되는 쿼리일 경우 기존의 insert 쿼리와 마찬가지로 commit() 함수를 통해서 적용해야 데이터베이스 파일에 적용되게 됩니다.

Python SQLite3 예제

지금까지 파이썬 SQLite3 사용법 대해 설명드렸습니다. 이 글에서 사용된 전체 예제 코드는 아래와 같습니다.

import sqlite3

conn = sqlite3.connect("test.db")

cur = conn.cursor()

cur.execute("create table test (name text, score int)")
conn.commit()

cur.execute("insert into test values (?, ?)", ('b', 1))
conn.commit()

cur.execute("insert into test values (:name, :score)", {'name':'c', 'score':99})
conn.commit()

data = [
 ('d', 93),
 ('e', 11)
]

cur.executemany("insert into test values (?, ?)", data)
conn.commit()

cur.execute('select * from test')
for row in cur:
    print(row)

cur.execute("update test set score=11 where name='b'")
conn.commit()

cur.execute("delete from test where name='e'")
conn.commit()

cur.execute("select * from test")
rows = cur.fetchall()

print (rows)

conn.close()

저장된 데이터를 이용하여 Python에서 시각화 하기 위해서는 아래의 글을 참고해 주시기 바랍니다.

Python 데이터 시각화

( 본문 인용시 출처를 밝혀 주시면 감사하겠습니다.)