Type something to search...

02 DB데이터 일괄추가하기

1. SQLite 데이터베이스 테이블 생성

여러 개의 SQL 명령문을 한 번에 실행하여 테이블을 생성하는 방법입니다.

1.1. 여러 SQL문을 실행

exe.py
1
import sqlite3
2
3
4
dbpath = "mydb.db"
5
con = sqlite3.connect(dbpath)
6
cur = con.cursor()
7
8
script = """
9
DROP TABLE IF EXISTS board;
10
CREATE TABLE board(
11
id INTEGER PRIMARY KEY AUTOINCREMENT,
12
name TEXT NOT NULL,
13
title TEXT,
14
msg TEXT
15
)
16
"""
17
cur.executescript(script)
18
19
con.commit()
20
con.close()

2: import sqlite3 — Python 내장 SQLite 라이브러리를 불러옵니다

5: sqlite3.connect(dbpath) — DB 파일에 연결합니다. 파일이 없으면 자동 생성됩니다

6: con.cursor() — SQL 명령을 실행할 수 있는 커서 객체를 만듭니다

10~17: SQL 스크립트 — DROP TABLE IF EXISTS로 기존 테이블 삭제 후 CREATE TABLE로 새 테이블 생성

  • INTEGER PRIMARY KEY AUTOINCREMENT — 자동 증가하는 고유 번호 (1, 2, 3…)
  • TEXT NOT NULL — 문자열 타입, 반드시 값이 있어야 함
  • TEXT — 문자열 타입, 비워둘 수 있음 (NULL 허용)

18: executescript() — 여러 SQL문을 ;로 구분하여 한 번에 실행합니다

20: con.commit() — 변경사항을 실제 DB에 반영합니다 (저장). 오류 시 con.rollback()으로 되돌릴 수 있습니다

21: con.close() — DB 연결을 종료합니다

1.2. 여러 행 데이터 일괄 삽입

exema.py
1
import sqlite3
2
3
dbpath = "mydb.db"
4
con = sqlite3.connect(dbpath)
5
cur = con.cursor()
6
7
data = [
8
("김망고","말티즈","말티즈강아지",),
9
("박공원","말티푸","말티푸강아지",),
10
("신봄동","푸숑","푸숑강아지",),
11
]
12
13
cur.executemany("INSERT INTO board(name,title,msg) VALUES(?,?,?);", data)
14
con.commit()
15
cur.execute("SELECT * FROM board;")
16
17
#board_list=cur.fatchone()
18
board_list=cur.fetchall()
19
20
for board in board_list:
21
print(board)
22
23
con.commit()
24
con.close()

7~11: data — 삽입할 데이터를 튜플의 리스트로 준비합니다. 각 튜플이 한 행(name, title, msg)에 해당합니다

13: executemany()? 플레이스홀더에 data 리스트의 각 튜플을 대입하여 INSERT를 반복 실행합니다

14: con.commit() — 삽입한 데이터를 DB에 저장합니다

15: execute("SELECT * FROM board") — board 테이블의 모든 데이터를 조회합니다

17: fetchall() — 조회 결과를 리스트로 모두 가져옵니다. fetchone()은 한 행만 가져옵니다

20~21: 조회 결과를 한 행씩 출력합니다

23: con.commit() — 변경사항을 DB에 저장합니다

24: con.close() — DB 연결을 종료합니다

결과 alt alt