Type something to search...

01 sqlite3로 SQL 명령문 실행

1. DBMS와 데이터모델링

1.1. 데이터베이스 (DataBase)

데이터베이스(DB) : 하드웨어에 저장된 데이터의 집합 자체를 의미한다. 서류들이 가득 차 있는 ‘서류함’과 같다

1.2. 데이터베이스 관리 시스템 (DataBase Management System)

데이터베이스 관리 시스템(DBMS): 저장된 데이터베이스를 관리해 주는 소프트웨어이다. 서류함에서 원하는 서류를 찾고, 정리하고, 보호하는 ‘관리인’ 역할을 한다.

  • DB: 데이터를 보관하는 저장소
  • DBMS: 저장소를 관리하는 소프트웨어

1.3. 데이터베이스 종류 (데이터 모델 기준)

데이터가 어떤 구조로 연결되고 저장되는지에 따른 분류입니다.

종류특징비고
계층형 (Hierarchical)데이터가 나무 뿌리처럼 상하 관계로 연결됨1960년대 최초 출시(IMS 등)
네트워크형 (Network)데이터 간의 관계를 그물 형태로 연결함계층형의 단점을 보완하기 위해 개발됨
관계형 (Relational)데이터를 표(Table) 형태로 관리함현재 가장 널리 쓰이는 표준 모델
객체형 (Object-oriented)정보를 객체 단위로 저장함프로그래밍의 객체 지향 개념을 도입함

1.4. 주요 DBMS 종류 (소프트웨어 제품 기준)

현재 시장에서 활발히 사용되는 구체적인 소프트웨어들입니다.

제품명데이터 모델주요 특징
Oracle관계형(Relational)강력한 보안과 성능, 대규모 시스템용
MySQL / MariaDB관계형(Relational)오픈 소스, 웹 서비스 개발에 대중적임
PostgreSQL관계형(Relational)신뢰성과 확장성이 뛰어난 오픈 소스
SQLite관계형(Relational)가벼운 파일 기반, 파이썬 내장 라이브러리
MongoDB문서형(Document)비정형 데이터 처리에 적합한 NoSQL
Redis키-값(Key-value)속도가 매우 빠른 인메모리 저장소
Elasticsearch검색 엔진대량의 텍스트 검색 및 분석에 특화됨

1.5. 데이터모델링 3단계

PDF보기

데이터베이스는 정보를 담는 **구조(모델)**를 먼저 결정하고, 그 구조를 실질적으로 관리할 **도구(DBMS 제품)**를 선택하여 사용하게 된다. 실습에서 사용할 **에스큐엘라이트(SQLite)**는 관계형 모델을 따르면서도 별도의 서버가 필요 없는 매우 가벼운 도구이다.

1.6. SQL 명령문

1.6.1. 특정 명령을 실행하도록 지시

명령어설명
execute('단일 SQL 명령어') 단일명령어 , 명령어 딱 하나만 입력할수 있다
executescript('복수 SQL 명령어')복수명령어 , 명령어 여려개 입력할수 있다
executemany('단일 SQL 명령어', 데이터 복수개 )복수명령어 와 복수 데이터

1.6.2. SELECT 문을 활용해 DB 테이블의 데이터를 가져온 후 꺼낼때 활용

명령어설명
fetchall()SELECT문으로 얻어진 데이터 모두 꺼냄
fetchone()SELECT문으로 얻어진 데이터 중 첫번째 행 하나 꺼냄

1.6.3. 조작의 3단계

  1. conn.cursor()
    1. 데이터베이스 테이블에 연결하여 명령 실행
  2. conn.commit() & rollback()
    1. commit 는 저장, rollback 는 복구
  3. conn.close()
    1. DB서버 종료

1.6.4. 데이터베이스 생성

app.py

1
import sqlite3
2
dbpath = "maindb.db"
3
conn = sqlite3.connect(dbpath)
4
5
cur=conn.cursor() #cursor() 함수는 자료 보관소(데이터베이스)에 직접 명령을 전달하고 결과를 가져오는 '작업 대리인'을 생성하는 기능
6
# conn.commit()&conn.rollback()
7
# conn.close
8
cur.execute()

위 코드를 실행하면 ‘maindb.db’ 파일이 생성된다.

maindb.db 파일은 vscode에서 읽을수 없으므로 추가 프로그램을 설치한다. DB Browser for SQLite 프로그램은 SQLite 로 작성된 데이터베이스를 쉽게 관리할수 있게 도와준다.

1.6.4.1. sqlitebrowser 설치

    1. 프로그램설치링크
    2. 자신의 OS에 해당하는 링크를 클릭하여 다운로드 한다.
    3. alt
    4. 윈도우의 경우 포터블을 다운로드 한다. alt
    5. 설치

1.6.5. 테이블생성

1
cursor.execute(
2
"""
3
CREATE TABLE songs (
4
id INTEGER PRIMARY KEY AUTOINCREMENT,
5
title TEXT NOT NULL,
6
artist TEXT NOT NULL,
7
genre TEXT,
8
play INTEGER DEFAULT 0
9
)
10
"""
11
)

[설명]

  • """ 는 여러 줄 SQL문을 실행할때 작성한다.
  • id INTEGER PRIMARY KEY AUTOINCREMENT : 고유 번호(id). 자동으로 1씩 증가.
  • title TEXT NOT NULL : 노래 제목(문자열). 반드시 값 필요.
  • artist TEXT NOT NULL : 가수(문자열). 반드시 값 필요.
  • genre TEXT : 장르(문자열). 선택적 항목.
  • play INTEGER DEFAULT 0 : 재생수(정수). 기본값 0.

  1. DB Browser 을 실행하고 아래 이미지를 참고하여 데이터베이스를 연다. alt
  2. 생성된 테이블의 구조를 확인한다. alt

1.6.6. 데이터 삽입

  1. app.py 에 테이블 생성 로직은 삭제한다.
  2. 아래의 소스코드 추가
1
songs_data = [
2
("Supernova", "aespa", "K-Pop"),
3
("Dynamite", "BTS", "K-Pop"),
4
("Blinding Lights","The Weeknd","Pop"),
5
("GODS", "NewJeans", "K-Pop"),
6
("Levitating", "Dua Lipa", "Pop"),
7
]
8
9
cur.executemany(
10
"INSERT INTO songs (title, artist, genre) VALUES (?, ?, ?)",
11
songs_data
12
)
13
14
conn.commit()
15
print(f"{cur.rowcount}개의 데이터가 삽입되었습니다.")
  1. app.py 실행 python app.py
  2. DB브라우저에서 확인 alt