Python sqlite3 사용하기
이번 블로깅은 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-사용하기 [솜씨좋은장씨]