- DB를 연결한다
- SQL문을 실행한다
- DB 연결을 닫는다
connect()
, close()
, commit()
, rollback()
큰 데이터들을 다루다보니 데이터베이스에서의 작업도 얼마나중요한지 생각해보게 되었다.
추후 프로젝트에서 사용해보면 어떨까? 사용법 대략 기억하기위해서 기록
import sqlite3 # SQLite 인터페이스 파이썬 표준 라이브러리
import os
db_path = os.getenv("HOME") + '/mydb.db'
conn = sqlite3.connect(db_path)
print(conn)
c = conn.cursor()
print(c)
# stocks 이름의 테이블 생성
c.execute("CREATE TABLE IF NOT EXISTS stocks (date text, trans text, symbol text, qty real, price real)")
# stocks 테이블에 데이터 하나를 삽입
c.execute("INSERT INTO stacks VALUES ('20200701', 'TEST', 'AIFFEL', 1, 10000)")
# 삽입한 데이터를 조회
c.execute("SELECT * FROM stocks")
# 조회된 내역을 커서를 통해 가져와 출력
print(c.fetchone())
conn.commit()
conn.commit()
# 종료 프로세스
c.close() # 커서를 먼저 닫고,
conn.close() # DB 연결을 닫아준다.
SELECT
FROM
WHERE
GROUP BY
ORDER BY
LIMIT 숫자
말하는거랑 생각보다 비슷하네??
언어 개발자들은 참 똑똑해(얼마나 고생했으면ㅜ)
SELECT * FROM 도서대출내역2
WHERE 이름 LIKE "문%" ;
SELECT * FROM 도서대출내역
WHERE 대출일 >= "2020-06-01"
AND 대출일 <= "2020-06-07" ;
SELECT * FROM 도서대출내역
WHERE 대출일 BETWEEN "2020-06-01" AND "2020-06-07" ;
SELECT * FROM 도서대출내역
WHERE 반납일 IS NOT NULL;
query = '''
SELECT C.이름, COUNT(*) 대출건수
FROM (
SELECT A.*, B.도서명
FROM 대출내역 AS A
LEFT JOIN 도서명 AS B
ON A.도서ID = B.도서ID ) C
GROUP BY C.이름;
'''
for row in c.execute(query):
print(row)
SELECT 이름,
CASE WHEN condition > 5
THEN A
ELSE B
작업 도중 틈틈히 확인하면서 익힐 수 있도록