Logo

[파이썬] sqlite3 모듈 사용법

파이썬에 기본적으로 내장되어 있는 데이터베이스인 sqlite3 모듈를 사용하는 방법에 대해서 알아보겠습니다.

자바스크립트에서 SQLite 데이터베이스를 사용하는 방법에 대해서는 관련 게시물을 참고 바랍니다.

데이터베이스 접속

sqlite3 내장 모듈을 임포트 후에 connect 메서드를 통해 커넥션 객체를 생성합니다.

  • 메모리 DB 접속 (일회성)
import sqlite3
con = sqlite3.connect(':memory:')
  • 파일 DB 접속
import sqlite3
con = sqlite3.connect('./test.db')

테이블 생성

커서 객체를 받아와서 execute 메서드로 CREATE TABLE 쿼리를 전송합니다.

cur = con.cursor()
cur.execute("CREATE TABLE PhoneBook(Name text, PhoneNum text);")

데이터 삽입

마찬가지로 커서 객체로 작업합니다.

  • 기본 String Query 사용
cur = con.cursor()
cur.execute("INSERT INTO PhoneBook Values('Derick', '010-1234-5678');")
  • Parameter: Tuple 사용
name = 'SangJung'
phoneNumber = '010-5670-2343'
cur = con.cursor()
cur.execute('INSERT INTO PhoneBook VALUES(?, ?);', (name, phoneNumber))
  • Named Parameter: Dictionary 사용
name = 'SangJung'
phoneNumber = '010-5670-2343'
cur = con.cursor()
cur.execute('INSERT INTO PhoneBook VALUES(:name, :phoneNumber);', {"name":name, "phoneNumber":phoneNumber})
  • List 사용
dataList = (('Tom', '010-543-5432'), ('DSP', '010-123-1234'))
cur = con.cursor()
cur.executemany("INSERT INTO PhoneBook VALUES(?, ?);", dataList)

데이터 조회

커서 객체는 파일 포인터처럼 한 번 읽은 데이터는 다시 읽을 수 없으므로 다시 SELECT 쿼리를 전송해야 함을 주의합니다.

  • 순회 조회
cur.execute('SELECT * FROM PhoneBook')
for row in cur:
    print(row)
('Derick', '010-1234-5678')
('SangJung', '010-5670-2343')
('Tom', '010-543-5432')
('DSP', '010-123-1234')
  • 단건 조회
cur.execute('SELECT * FROM PhoneBook')
cur.fetchone()
('Derick', '010-1234-5678')
  • 다건 조회
cur.fetchmany(2)
[('SangJung', '010-5670-2343'), ('SangJung', '010-5670-2343')]
  • 모두 조회
cur.fetchall()
[('Tom', '010-543-5432'), ('DSP', '010-123-1234')]