02 DB데이터 일괄추가하기
1. SQLite 데이터베이스 테이블 생성
여러 개의 SQL 명령문을 한 번에 실행하여 테이블을 생성하는 방법입니다.
1.1. 여러 SQL문을 실행
1import sqlite32
3
4dbpath = "mydb.db"5con = sqlite3.connect(dbpath)6cur = con.cursor()7
8script = """9DROP TABLE IF EXISTS board;10CREATE TABLE board(11id INTEGER PRIMARY KEY AUTOINCREMENT,12name TEXT NOT NULL,13title TEXT,14msg TEXT15)16"""17cur.executescript(script)18
19con.commit()20con.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. 여러 행 데이터 일괄 삽입
1import sqlite32
3dbpath = "mydb.db"4con = sqlite3.connect(dbpath)5cur = con.cursor()6
7data = [8 ("김망고","말티즈","말티즈강아지",),9 ("박공원","말티푸","말티푸강아지",),10 ("신봄동","푸숑","푸숑강아지",),11]12
13cur.executemany("INSERT INTO board(name,title,msg) VALUES(?,?,?);", data)14con.commit()15cur.execute("SELECT * FROM board;")16
17#board_list=cur.fatchone()18board_list=cur.fetchall()19
20for board in board_list:21 print(board)22
23con.commit()24con.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 연결을 종료합니다
결과
