티스토리 뷰
SQLITE3 모듈 사용하기 #1¶
1. SQLite 란?¶
SQLite는 별도의 서버 프로세스가 필요 없고 SQL 질의 언어의 비표준 변형을 사용하여 데이터베이스에 엑세스할 수 있는 경량 디스크 기반 데이터베이스를 제공하는 C라이브러리이다. SQLite는 별도의 복잡한 서버 설치가 필요 없고, 쉽고 편리하게 사용할 수 있다는 점에서 널리 사용되고 있다. 대부분의 Mac os나 리눅스에서는 SQLite을 기본적으로 내장하고 있지만, 만약 시스템에 내장되어 있지 않는 경우는 http://www.sqlite.org 에서 다운받아 설치할 수 있다. SQLite는 기본적으로 SQLite DB 엔진과 "sqlite3" 라는 Command line tool 을 갖고 있다. 데이터 베이스를 .db 확장자를 가지는 단일 파일로 저장한다.
-먼저 sqlite3를 임포트 하자.¶
In [60]:
import sqlite3
In [66]:
# 해당 empolyee.db로 연결한다.
conn = sqlite3.connect("employee.db")
# conn.cursor를 통해 Cursor 하나를 생성한다.
cur = conn.cursor()
# conn.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.close를 통해 연결을 해제한다.
conn.close()
- 모든 데이터 가져와서 출력하기.¶
In [67]:
# 만약 employee.db가 없을 경우 새로 생성하면서 연결하게되고 employee.db가 이미 있을 경우 해당 db로 연결하게 된다.
conn = sqlite3.connect("employee.db")
# cursor 하나를 생성한다.
cur = conn.cursor()
# cur.execute를 통해 SELECT 쿼리를 실행한다.
cur.execute("SELECT * FROM employee_data")
# cur.execute를 통해 가져온 모든 결과의 행을 가져와 리스트로 가져온다.
rows = cur.fetchall()
# 가져온 데이터를 반복문을 통해 하나의 row씩 출력한다.
for row in rows:
print(row)
# 연결을 해제한다.
conn.close()
(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')
여기서 원하는 값만 골라 출력하려면 cur.excute("SELET * FROM employee_data") 안에 들어가는 쿼리만 변경하여 사용하면 된다.
- ex) employeed_data 테이블에서 id가 2000보다 큰 사람의 이름과 부서만 가져오기¶
In [68]:
conn = sqlite3.connect("employee.db")
cur = conn.cursor()
cur.execute("SELECT name, department FROM employee_data WHERE employee_data.id > 2000")
rows = cur.fetchall()
for row in rows:
print(row)
('Sol', 'Marketing') ('Jiyoung', 'Marketing')
- ex) employeed_data 테이블에서 이름이 Donghyun인 사람의 닉네임만 가져오기¶
In [71]:
conn = sqlite3.connect("employee.db")
cur = conn.cursor()
cur.execute("SELECT nickname FROM employee_data WHERE employee_data.name == 'Donghyun'")
rows = cur.fetchall()
for row in rows:
print(row)
('SOMJANG',)
- 모든 데이터를 가져와서 DataFrame 형태로 출력하기¶
In [70]:
# 먼저 DataFrame 사용하기 위해 pandas를 import 한다.
import pandas as pd
# employeed.db에 연결한다.
conn = sqlite3.connect("employee.db")
# cursor를 생성한다.
cur = conn.cursor()
# cur.execute 를 통해 SELECT 쿼리를 실행한다.
cur.execute("SELECT * FROM employee_data")
# 행 데이터를 가져온다.
rows = cur.fetchall()
# coulumns 이름을 가져온다.
cols = [column[0] for column in cur.description]
# 위의 코드를 활용해 DataFrame을 만들어준다.
data_df = pd.DataFrame.from_records(data=rows, columns=cols)
# 연결을 해제한다.
conn.close()
# 만든 DataFrame을 확인하자.
data_df
Out[70]:
id | name | nickname | department | employment_date | |
---|---|---|---|---|---|
0 | 1001 | Donghyun | SOMJANG | Development | 2020-04-01 00:00:00.000 |
1 | 2001 | Sol | Fairy | Marketing | 2020-04-01 00:00:00.000 |
2 | 2002 | Jiyoung | Magician | Marketing | 2020-04-01 00:00:00.000 |
3 | 1002 | Hyeona | Theif | Development | 2020-04-01 00:00:00.000 |
4 | 1003 | Soyoung | Chief | Development | 2020-04-01 00:00:00.000 |
출처 : 솜씨좋은 장씨님 tistory