본문 바로가기
Programming/Python * Django

[Python] 파이썬 SQLite 연동하기

by 고막고막 2019. 5. 21.
SQLite는 소형 관계형 데이터베이스이다. Oracle, MysQL에 비하면 훨씬 compact 하지만, 파일이 곧 데이터베이스가 된다는 간편함 때문에 안드로이드 등의 내장형 데이터베이스로 활용되기도 한다. 이번 포스팅에서는 파이썬으로 SQLite를 연동해 테이블 관리를 해보겠다.

1) DB Browser for SQLite 다운로드
https://sqlitebrowser.org/blog/portableapp-for-3-11-2-release-now-available/

2) 연결 객체 생성

import sqlite3
db = sqlite3.connect("test.db")	# DB파일 생성
print(db)

3) 커서(쿼리문 전달 가능 객체) 생성

cursor = db.cursor()
print(cursor)

4) 테이블 생성
: SQLite에는 오라클에서는 지원하지 않는 'IF EXISTS'라는 구문이 있다. 테이블을 생성하거나 삭제하기 전에 테이블이 존재하는지 또는 존재하지 않는지 검증하는데 사용된다. 

cursor.execute("DROP TABLE IF EXISTS stInfo")
cursor.execute("""
    CREATE TABLE stInfo(
        name VARCHAR(20),
        addr VARCHAR(30),
        sex CHAR(1),
        birth DATE,
        korean INT,
        math INT,
        english INT
    )""")

5) 데이터 입력
: 데이터를 1개만 저장할 때는 execute 매서드, 데이터를 여러개 저장할 때는 executescript 매서드를 사용해 구분해야 한다.

# 데이터 1개 저장하기
cursor.execute("""
     INSERT INTO stInfo VALUES('홍길동', '전남 장성', 'M', '1459-05-11', 99, 98, 97)
""")

# 데이터 여러개 저장하기
cursor.executescript("""
    INSERT INTO stInfo VALUES('홍길동', '전남 장성', 'M', '1459-05-11', 99, 98, 97);
    INSERT INTO stInfo VALUES('임꺽정', '구월산', 'M', '1490-12-11', 91, 68, 97);
    INSERT INTO stInfo VALUES('장길산', '황해도 장산곶', 'M', '1521-03-23', 99, 98, 97);
    INSERT INTO stInfo VALUES('김연아', '강원도 평창', 'F', '1989-08-21', 40, 98, 97);
    INSERT INTO stInfo VALUES('아이유', '서울시 강남구', 'F', '1993-04-16', 99, 58, 87);
""")

6) 검색
: 다양한 방법으로 데이터에 접근해 읽어올 수 있다. 아래 코드 참조.

cursor.execute("SELECT * FROM stInfo")
print(cursor.fetchone())    # 1행 읽기
print(cursor.fetchmany(3))  # 3행 읽기
print(cursor.fetchall())    # 모든 행 읽기

# 모든 행 읽기
cursor.execute("SELECT * FROM stInfo")
for row in cursor:
    print(row)

# 모든 행 읽기
for row in cursor.execute("SELECT * FROM stInfo"):
    print(row)