IT/프로그래밍

[파이썬] 파이썬에서 SQLite3 사용하기 [패스트 캠퍼스 챌린지 41일]

뜻밖의 행복 2022. 3. 5. 23:23
반응형

안녕하세요? 뜻밖의 행운입니다.

패스트 캠퍼스 도전 41일차 이제 진짜 얼마 남지 않았네요?

오늘 배운 내용은 파이썬에서 SQLite3를 사용하는 방법에 대해서 배웠습니다.

이제 파이썬을 통해서 DB를 자유롭게 다룰 수 있게 되는 것이죠!

그렇다면 더 복잡하고 규모가 큰 개발이 가능하게 되는 것입니다.

 

지금까지 배운 SQL 을

파이썬에서 실행시키는 방법을 배웠는데요 

각각 create table, insert, select, update, delete 를 하는 방법을 배웠습니다. 

흥미로웠습니다. 

사용도 별로 어렵지 않았습니다. 

 

 

처음에는 create table에 대해 보겠습니다.

 

# 모듈 추가
import sqlite3

# 데이터베이스 열기
conn = sqlite3.connect('Chapter05/SQL_DDL.db')

# 커서 생성
cur = conn.cursor()

# SQL 명령 작성
CREATE_SQL = """
    CREATE TABLE IF NOT EXISTS Item(
        id integer primary key autoincrement,
        code text not null,
        name text not null,
        price integer not null
    );
"""

# SQL 명령 실행
cur.execute(CREATE_SQL)

# 데이터베이스 닫기
conn.close()

우선 사용하기 위해서 모듈을 import 시켜야 합니다. sqlite3 을 import 하고 

 
# 데이터베이스 열기
conn = sqlite3.connect('Chapter05/SQL_DDL.db')
네 말 그대로 데이터 베이스 와 연결을 해야 해당 데이트 베이스를 변경하겠죠?
connect 매서드를 사용하면 되고 그 뒤에는 db 파일 경로를 주면 됩니다.

# 커서 생성
cur = conn.cursor()
DB에 직접 연결하여 명령어를 전달하기 위해서는 커서 생성을 해야 하며 위에 conn 으로 생성한 연결에
cursor 매서드로 커서를 생성해줍니다.

# SQL 명령 작성
CREATE_SQL = """
    CREATE TABLE IF NOT EXISTS Item(
        id integer primary key autoincrement,
        code text not null,
        name text not null,
        price integer not null
    );
"""
사용하고자 하는 명령어는 기존에 배웠던 SQL 형식으로 작성하면 됩니다. 
id, code, name, price 컬럼이 있는 DB 테이블을 생성하는게 딱 느낌이 오죠?

# SQL 명령 실행
cur.execute(CREATE_SQL)
마지막으로 SQL 명령어를 실행해줍니다.
# 데이터베이스 닫기
conn.close()

그리고 DB를 닫아야 합니다. 

 

아래는 insert 예제 입니다. 

# 모듈 추가
import sqlite3

# 데이터베이스 열기
conn = sqlite3.connect('Chapter05/SQL_DDL.db')

# 커서 생성
cur = conn.cursor()

# SQL 명령 작성
INSERT_SQL = "INSERT INTO item(code, name, price) VALUES (?, ?, ?);"

# 데이터 여러개 한번에 추가하기
data = (
    ('A00002', '에어컨 20평형', 350000),
    ('A00003', '최신형 스마트폰', 800000),
    ('A00004', '가성비 노트북', 650000)
)

# SQL 명령 실행
cur.executemany(INSERT_SQL, data)

# 커밋 : INSERT, UPDATE, DELETE는 commit을 해야 실제 데이터베이스에 반영된다.
conn.commit()

# 데이터베이스 닫기
conn.close()

SQL 명령 작성까지는 크게 다른 것은 없으며 

데이터 여러개 추가 할때 튜플 형식으로 넣으면 되는 것과 

insert, update, delete 같이 DB를 바꾸는 SQL의 경우 꼭 cmmit을 해야 반영이 된다는 것만 주의 하면 됩니다.

 

연이어서 보겠습니다.

 

아래는 Select

# 모듈 추가
import sqlite3

# 데이터베이스 열기
conn = sqlite3.connect('Chapter05/SQL_DDL.db')

# 커서 생성
cur = conn.cursor()

# SQL 명령 작성
SELECT_SQL = "SELECT * FROM item LIMIT 2;"

# SQL 명령 실행
cur.execute(SELECT_SQL)

rows = cur.fetchall()
for row in rows:
    print(row)

# 데이터베이스 닫기
conn.close()

아래는 update

# 모듈 추가
import sqlite3

# 데이터베이스 열기
conn = sqlite3.connect('Chapter05/SQL_DDL.db')

# 커서 생성
cur = conn.cursor()

# SQL 명령 작성
UPDATE_SQL = "UPDATE Item set price = 650000 WHERE code='A00002';"

# SQL 명령 실행
cur.execute(UPDATE_SQL)

# 커밋
conn.commit()

# 데이터베이스 닫기
conn.close()

마지막으로 delete 입니다.

 

# 모듈 추가
import sqlite3

# 데이터베이스 열기
conn = sqlite3.connect('Chapter05/SQL_DDL.db')

# 커서 생성
cur = conn.cursor()

# SQL 명령 작성
DELETE_SQL = "DELETE FROM Item WHERE code='A00002';"

# SQL 명령 실행
cur.execute(DELETE_SQL)

# 커밋
conn.commit()

# 데이터베이스 닫기
conn.close()

네 쉬운 SQL을 사용하는 만큼 크게 변경되는 것은 없습니다.

멈추지 않고 달려왔는데 한번 다시 처음부터 쭈욱 들어야 겠습니다.

점점 정말 재미있었지네요 ㅎ

 

 

 

반응형