본문 바로가기
Development

python에서 sqlite 사용하기

by _Jay_ 2021. 12. 21.
반응형

데이터베이스를 처음 배운다면 MySQL(또는 MariaDB)을 가장 많이 접하게 된다. 하지만 대부분의 규모있는 기업에서는 MySQL보다는 상업용인 Oracle 데이터베이스를 사용하고, 소규모나 로컬 프로그램에서는 sqlite나 tinyDB를 좀 더 많이 활용한다. 실제 내가 이전 회사에서 업무에 사용하고 있는 DB도 sqlite이며 굉장히 가볍게 사용할 수 있어서 편리했다.

sqlite는 데이터베이스 조작 언어(SQL)을 사용해 DB를 처리할 수 있어 널리 사용되며 안드로이드 및 iOS에서 표준으로 제공되고 있다. 다른 DB와 다르게 파일 하나가 하나의 데이터베이스로 처리되며, 별도의 DB 전용 앱을 사용하지 않아도 사용할 수 있다는게 큰 장점이다. 파이썬에서는 sqlite3라는 표준 라이브러리를 선언하면 사용할 수 있는데 이번 포스팅에서 간단하게 사용 방법을 소개하도록 하겠다.

# test.py

import sqlite3

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

cur = conn.cursor()
cur.execute("CREATE TABLE info (name   TEXT, age   INTEGER)")
conn.commit()

cur = conn.cursor()
cur.execute("INSERT INTO info (name, age) VALUES ('David', 20)")
conn.commit()

cur = conn.cursor()
cur.execute("SELECT * FROM info")
result = cur.fetchall()
print(result)

 

위의 코드는 "test.db"라는 데이터베이스 파일을 만들고, "info"라는 테이블을 생성하여 이름과 나이를 넣고 추출하는 예제이다. 우선 sqlite3 모듈을 임포트시키고 connect() 함수를 이용하여 SQLite 데이터베이스에 연결한다. dbpath로 지정된 파일 경로를 참고하여 데이터베이스에 연결하게 되는데, 해당 파일이 존재하지 않으면 새롭게 생성한다.

 

cursor() 함수는 데이터베이스를 조작하는 커서(데이터베이스의 위치를 가리키는 요소라고만 알아두자)를 추출하는 함수이며, exeute() 함수에 SQL을 전달하므로서 쿼리문을 실행시킨다. 다만 execute() 함수를 실행한다고 데이터베이스에 곧 바로 정보가 반영되는 것은 아니며 commit() 함수를 실행해야만 데이터베이스에 바로 반영이 된다. CREATE 문으로 테이블을 생성하고, INSERT 문으로 테이블에 정보를 넣고 마지막 SELECT 문을 통해 테이블의 정보를 가져온다.

 

마지막 코드에서는 커서에서 fetchall() 함수를 이용하여 실행 결과를 추출하게 되며, 행의 결과를 튜플 형태로 확인할 수 있다. 여기서 자세한 SQL 쿼리에 대해 설명하진 않겠지만, SQL 쿼리 자체가 직관적이기 때문에 쉽게 이해할 수 있을 것이다.

 

[DB Browser for SQLite로 확인한 test.db의 구조]

위와 같이 생성된 "test.db" 파일은 "DB Browser for SQLite" 프로그램에서 DB의 구조를 확인할 수 있다. 업무에서는 C++을 사용하기 때문에 좀 처럼 파이썬에서 sqlite를 사용해 볼 기회가 없었는데, 파이썬이 좀 더 사용하기 쉽고 의미도 명확하게 알 수 있다. 간단하거나 로컬에서 돌아가는 프로그램을 만든다면 sqlite를 사용하는 것이 다른 데이터베이스를 사용하는 것보다 쉽게 개발할 수 있을 것으로 생각된다.

반응형

댓글