파이썬에서 SQLite 사용하기
대략적인 데이터베이스 사용순서
1.database 파일 열기
2.커서(Cursor) 생성
3.SQL 명령실행
4.커밋 또는 롤백
5.데이터베이스 닫기
커서란 무었인가?
커서란 셔틀버스와 같다.
사용자 ===sql==> 셔틀버스(커서) ===sql==> DBMS
사용자 <==데이터== 셔틀버스(커서) <==데이터== DBMS
커밋은 승인이다!!
insert, update, delete과 같은 테이블을 수정하는 경우 승인이 필요하다.
롤백은 취소다!!
되돌리기이다.
추가학습내용
첫번째 CREATE TABLE
import sqlite3
#데이터베이스 열기
conn = sqlite3.connect("데이터베이스파일.db")
#커서생성
cur = conn.cursor()
#sql명령 실행
CREATE_SQL = """
CREATE TABLE IF NOT EXISTS ITEMS(
id integer primary key autoincrement
code text not null,
);
"""
#IF NOT EXISTS 테이블이 존재한다면 실행하지 않는다.
#CREATE TABLE시 사용하는 것이 좋다.
#primary key만 사용한 경우 중간에 데이터가 삭제되면 중간을 비우지 않고 진행한다.
#1,2,3,4,5 3을 제거 하면 1,2,3,4가 된다
#primary key autoincrement 사용한 경우라면
#1,2,3,4,5 3을 제거 하면 1,2,4,5
#sql명령 실행
cur.execute(CREATE_SQL)
#데이터베이스 닫기
conn.close()
두번째 INSERT DATA
import sqlite3
#데이터베이스 열기
conn = sqlite3.connect("데이터베이스파일.db")
#커서생성
cur = conn.cursor()
#sql명령 실행
INSERT_SQL = """
#첫번째 방법
INSERT INTO ITEMS(컬럼명,컬럼명) VALUSE(값,값);
#두번째 방법
INSERT INTO ITEMS(컬럼명,컬럼명) VALUSE(?,?);
"""
#sql명령 실행
#첫번째 방법에 대한 execute
cur.execute(INSERT_SQL)
#두번째 방법_1에 대한 execute
cur.execute(INSERT_SQL,(값, 값))
#두번째 인자로 여기서 데이터를 직접 넣어준다.
#데이터는 이터러블한 데이터형을 넣어야한다.
#두번째 방법_2에대한 데이터
데이터 =(
(안녕,안녕하세요.),
(반가워,나도반가워.),
(어렵다,나도어렵다.),
)
#두번째 방법_2에 대한 execute
cur.executemaney(INSERT_SQL, 데이터)
#한번에 많은 데이터를 넣을 수 있다.
#이터너블한 데이터 튜플이나, 리스트등으로 데이터를 만들어서 두번째 인자로 준다.
#커밋(INSERT, UPDATE, DELETE은 커밋을 해야 실제 데이터 베이스에 반영된다)
conn.commit()
#데이터베이스 닫기
conn.close()
세번째 SELECT DATA
import sqlite3
#데이터베이스 열기
conn = sqlite3.connect("데이터베이스파일.db")
#커서생성
cur = conn.cursor()
#sql명령 실행
SELECT_SQL = """
SELECT * FROM 테이블명;
"""
#sql명령 실행
cur.execute(SELECT_SQL)
#SELECT구문은 데이터를 추출하는 것이므로 데이터를 받아와야한다.
rows = cur.fetchall()
for row in rows:
print(row)
#데이터베이스 닫기
conn.close()
네번째 UPDATA DATA
import sqlite3
#데이터베이스 열기
conn = sqlite3.connect("데이터베이스파일.db")
#커서생성
cur = conn.cursor()
#sql명령 실행
UPDATE_SQL = """
UPDATE 테이블명 set 컬럼명 = 값 where;
"""
#sql명령 실행
cur.execute(UPDATE_SQL)
#커밋(INSERT, UPDATE, DELETE은 커밋을 해야 실제 데이터 베이스에 반영된다)
conn.commit()
#데이ㅣ터베이스 닫기
conn.close()
다섯번째 DELETE DATA
import sqlite3
#데이터베이스 열기
conn = sqlite3.connect("데이터베이스파일.db")
#커서생성
cur = conn.cursor()
#sql명령 실행
DELETE_SQL = """
DELETE FROM 테이블명 where 조건식;
"""
#sql명령 실행
cur.execute(DELETE_SQL)
#커밋(INSERT, UPDATE, DELETE은 커밋을 해야 실제 데이터 베이스에 반영된다)
conn.commit()
#데이ㅣ터베이스 닫기
conn.close()