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)
'Programming > Python * Django' 카테고리의 다른 글
[Django] runserver 수행시 broken pipe 이슈 해결 (0) | 2021.07.05 |
---|---|
[Django] ORM 구조와 원리 그리고 최적화 전략 - Pycon2020 김성렬님 발표 정리 (0) | 2021.06.06 |
[Python] 정규표현식(Regular Expression) 기본 문법, 파이썬 re 모듈 활용 (0) | 2019.05.24 |
[Python] Selenium을 활용한 웹 크롤링 (0) | 2019.05.21 |