Data Analysis

파이썬 sqlite3(데이터베이스) 모듈 사용

알로그 2020. 11. 12. 11:03
반응형

파이썬에 내장되어 있는 sqlite3 모듈을 사용해보자.

기본적인 CRUD(Create, Read, Update, Delete)정도만 사용해봐도 될 것 같고, 나머지는 sql 쿼리를 공부하면 더 다양한 문법들을 사용할 수 있다.

코딩을 하기에 앞서 sqlite 데이터베이스에 값이 정상적으로 들어갔는지 확인하기 위해 'DB browser for SQLite'를 설치하자.

sqlitebrowser.org/dl/

 

Downloads - DB Browser for SQLite

(Please consider sponsoring us on Patreon 😄) Windows Our latest release (3.12.1) for Windows: Windows PortableApp There is a PortableApp available, but it’s still the previous (3.12.0) release version. It should be updated to 3.12.1 over the next few

sqlitebrowser.org

 

<소스코드>

import sqlite3

def createTable():
    try:
        sql = "create table if not exists student(name varchar(20), age int, birth date)"
        conn = sqlite3.connect('test.db')
        conn.execute(sql)
        conn.close()
        print("테이블 생성 성공")
    except Exception as err:
        print("테이블 생성 실패")

def insertData(name, age, birth):
    try:
        sql = "insert into student values(?, ?, ?)"
        conn = sqlite3.connect('test.db')
        conn.execute(sql, (name, age, birth))
        conn.commit()
        conn.close()
        print("데이터 추가 성공")
    except Exception as err:
        print("데이터 추가 실패")

def updateData(old_name, new_name):
    try:
        sql = "update student set name=?, age=? where name=?"
        db = sqlite3.connect("test.db")
        db.execute(sql, (new_name, 20, old_name))
        db.commit()
        db.close()
        print("데이터 수정 성공")
    except Exception as err:
        print("데이터 실패")

def deleteData(name):
    try:
        sql = "delete from student where name=?"
        db = sqlite3.connect("test.db")
        db.execute(sql, (name,))
        db.commit()
        db.close()
        print("데이터 삭제 성공")
    except Exception as err:
        print("데이터 삭제 실패")

def selectData():
    try:
        sql = "select * from student"
        db = sqlite3.connect("test.db")
        cur = db.cursor()
        cur.execute(sql)
        dt = cur.fetchall()
        db.close()
        
        for n, a, b in dt:
            print(n, a, b)
    except Exception as err:
        print("select 실패")

createTable()
insertData('신사임당', 50, '2000-01-01')
insertData('김철수', 30, '2010-01-01')
updateData('김철수', '김철구')
selectData()
deleteData('김철구')
selectData()

 

<결과화면>

 

코드를 실행하면 해당 path에 'test.db'라는 데이터베이스가 생성된다.

이 데이터베이스를 아까 설치했던 'DB browser for SQLite'을 실행해서 내부 데이터를 확인할 수 있다.

위 코드의 결과로 현재는 신사임당에 해당하는 데이터만 들어있다.

위의 소스코드를 함수화시켜놨으니 insert문이나 delete문을 호출하면서 값이 변동되는지 확인해보면 어떻게 동작하는지 알 수 있을 것이다.

반응형

'Data Analysis' 카테고리의 다른 글

크롤링이 안 되는 경우 (User-Agent)  (0) 2022.04.30
파이썬 numpy  (0) 2021.02.20
엑셀 빈 셀에 한 번에 특정 값 입력하기  (0) 2020.11.12
파이썬 openpyxl (차트)  (0) 2020.11.11
파이썬 openpyxl  (0) 2020.11.11