DB_study

Python sqlite3 사용하기

살짝가식 2021. 10. 27. 01:57

이번 블로깅은 SQLite라는 라이브러리를 소개할 것이다.  

 

SQLite

SQLite는 별도의 서버 프로세스가 필요 없고 SQL 질의 언어의 비표준 변형을 사용하여 데이터베이스에 액세스할 수 있는 경량 디스크 기반 데이터베이스를 제공하는 C 라이브러리입니다. 일부 응용 프로그램은 내부 데이터 저장을 위해 SQLite를 사용할 수 있습니다. SQLite를 사용하여 응용 프로그램을 프로토타입 한 다음 PostgreSQL 이나 Oracle과 같은 더 큰 데이터베이스로 코드를 이식할 수도 있습니다.(출처 : sqlite3)

 

지원하는 자료형

SQLite는 기본적으로 다음 형을 지원합니다: NULL, INTEGER, REAL, TEXT, BLOB.

따라서 다음과 같은 파이썬 형을 아무 문제 없이 SQLite로 보낼 수 있습니다.

파이썬형 SQLite형
None NULL
int INTEGER
float REAL
str TEXT
bytes BLOB

 

예제

employee.db

 

employee_data

위와 같은 테이블을 생성해 보도록 하겠습니다.

 

테이블 생성하기.

CREATE TABLE & INSERT DATA

 

# employee.db가 없을 경우 새로 생성하며 연결
# employee.db가 있을경우 해당 db로 연걸
conn = sqlite3.connect("employee.db")

# conn.cursor을 통해 Cursor를 하나 생성
cur = conn.cursor()

# conn.execute를 통해 employee_data 테이블을 생성합니다.
conn.execute('CREATE TABLE employee_data(id INTEGER, name TEXT, nickname TEXT, department TEXT, employment_date TEXT)')

# cur.executemany를 통해 데이터를 INSERT합니다.
cur.executemany(
    'INSERT INTO employee_data VALUES (?, ?, ?, ?, ?)',
    [(1001, 'Donghyun', 'SOMJANG', 'Development', '2020-04-01 00:00:00.000'),
     (2001, 'Sol', 'Fairy', 'Marketing', '2020-04-01 00:00:00.000'),
     (2002, 'Jiyoung', 'Magician', 'Marketing', '2020-04-01 00:00:00.000'),
     (1002, 'Hyeona', 'Theif', 'Development', '2020-04-01 00:00:00.000'),
     (1003, 'Soyoung', 'Chief', 'Development', '2020-04-01 00:00:00.000')
    ]
)

# conn.commit()를 통해 변경사항을 저장합니다.
conn.commit()
# conn.close()를 통해 db와의 연결 해제합니다.
conn.close()

저장한 데이터는 영구적이며 이후 세션에서 사용할 수 있습니다:

 

 

아래 예제는 간단한 SELECT 문을 실행한 후, 전체 ROW 데이타를 출력하는 예이다.

 

# employee.db 연결
conn = sqlite3.connect("employee.db")

# cursor를 생성합니다.
cur = conn.cursor()

# cur.excute를 이용해 SELECT 쿼리를 실행합니다.
cur.execute("SELECT * FROM employee_data")

# cur.execute를 통해 가져온 모든 결과의 행을 가져와 리스트로 가져온다.
rows = cur.fetchall()

# 반복문을 통해 하나씩 row를 출력한다.
for row in rows:
    print(row)
    
# conn.close()이용해 db와의 연결을 해제합니다.
conn.close()

출력 결과

데이터를 가져와서 DataFrame형태로 출력하기

 

# 먼저 DataFrame를 사용하기위해 pandas를 import 하기
import pandas as pd

# employee.db 연결하기
conn = sqlite3.connect("employee.db")

# cursor를  생성하기
cur = conn.cursor()

# cur.execute를 통해 SELRCT 쿼리 실행
cur.execute("SELECT * FROM employee_data")

# 행 데이터를 가져오기
rows = cur.fetchall()

# columns열 이름을 가져오기
cols = [column[0] for column in cur.description]

# 코드를 활요하여 DataFrame을 만들어주기
data_df = pd.DataFrame.from_records(data=rows, columns=cols)

# conn.close()이용해 db와의 연결을 해제합니다.
conn.close()

data_df

출력 결과가 잘 나온것을 확인 할 수 있다.

 

다음 Table 삭제 코드

 

conn = sqlite3.connect("employee.db") 

cur = conn.cursor() 

# conn.execute에 DROP 쿼리를 넣어 실행
conn.execute('DROP TABLE employee_data')

conn.close()

지금은 막 배우고 있는터라 많이 부족한 내용이다. 좀더 자세하게 알게되면 상세하게 추가로 올려보도록 하자.

출처: https://somjang.tistory.com/entry/Python-Python에서-Sqlite3-사용하기 [솜씨좋은장씨]