DB데이터 일괄추가하기
코드 블록의 Try it Yourself 버튼으로 직접 실행할 수 있다.
구문
1. SQLite 데이터베이스 테이블 생성
여러 개의 SQL 명령문을 한 번에 실행하여 테이블을 생성하는 방법입니다.
1.1. 여러 SQL문을 실행
# exe.py
import sqlite3
dbpath = "mydb.db"
con = sqlite3.connect(dbpath)
cur = con.cursor()
script = """
DROP TABLE IF EXISTS board;
CREATE TABLE board(
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
title TEXT,
msg TEXT
)
"""
cur.executescript(script)
con.commit()
con.close()
None: 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
import sqlite3
dbpath = "mydb.db"
con = sqlite3.connect(dbpath)
cur = con.cursor()
data = [
("김망고","말티즈","말티즈강아지",),
("박공원","말티푸","말티푸강아지",),
("신봄동","푸숑","푸숑강아지",),
]
cur.executemany("INSERT INTO board(name,title,msg) VALUES(?,?,?);", data)
con.commit()
cur.execute("SELECT * FROM board;")
#board_list=cur.fatchone()
board_list=cur.fetchall()
for board in board_list:
print(board)
con.commit()
con.close()
None: 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 연결을 종료합니다
결과
