und. 28 - SQL 사용하여 DB 다루기
3323 단어 AIFFELfundamentalsAIFFEL
Python Database API
- DB를 연결한다
- SQL문을 실행한다
- DB 연결을 닫는다
- 주요 함수:
connect()
, close()
, commit()
, rollback()
PEP 249
SQL lite
큰 데이터들을 다루다보니 데이터베이스에서의 작업도 얼마나중요한지 생각해보게 되었다.
추후 프로젝트에서 사용해보면 어떨까? 사용법 대략 기억하기위해서 기록
- 데이터 베이스에 연결하는 객체를 선언한다
import sqlite3 # SQLite 인터페이스 파이썬 표준 라이브러리
import os
db_path = os.getenv("HOME") + '/mydb.db'
conn = sqlite3.connect(db_path)
print(conn)
DB 핸들링 시나리오
- cursor는 QUERY를 수행하고 결과를 얻는데 사용하는 객체다(습관적으로 사용해도 좋음)
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()
- DB를 실제로 업데이트
- transaction 관리
conn.commit()
# 종료 프로세스
c.close() # 커서를 먼저 닫고,
conn.close() # DB 연결을 닫아준다.
쿼리 기본 구조
SELECT
FROM
WHERE
GROUP BY
ORDER BY
LIMIT 숫자
말하는거랑 생각보다 비슷하네??
언어 개발자들은 참 똑똑해(얼마나 고생했으면ㅜ)
WHERE 조건문
- 특정 문자열을 포함하는 row를 가져옴
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" ;
- NULL 조건 다루기
SELECT * FROM 도서대출내역
WHERE 반납일 IS NOT NULL;
JOIN
중첩 질의 Nested Query
- 선행 쿼리의 결과로부터 다시 쿼리를 수행하는 구조
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)
IFNULL()
CASE
SELECT 이름,
CASE WHEN condition > 5
THEN A
ELSE B
작업 도중 틈틈히 확인하면서 익힐 수 있도록
새롭게 알게 된 것들
- SQL은 해봐야지 생각만 하고 있다가, 직접 접해보는것은 처음인데 꽤 익숙한 느낌이 들었다
- 역시 한 가지의 언어로는 제약되는 것이 많아 다양하게 익히는 것이 필요할 것 같다(마르코형님이 이야기했던대로 연봉도 올라가겠지?)
- 자주 사용하는 라이브러리의 요악 or cheet sheet 를 만들어두는 것이 자주 도움이 될 것 같다
한 주의 회고
- 딥한 내용들이 계속이어져서 체력적으로 조금 지치는 느낌.
- 언제고 다시 참고해 쓸만한 내용들이 즐비하게 나오고 있어 충실한 느낌
- 두 가지 느낌이 섞여서 다짐을 해보지만
다음 주의 다짐
- 혼자 일을 하는 것보다, 함께 했을 때 더 멀리 간다는 말이 자주 떠오른다 여러가지 시도해보고 싶은것들이 생겨남
- 개발 분야의 일은 개발 자체도 중요하지만 일상의 리듬을 확보하는 일이 굉장히 큰 영향을 미친다는걸 꺠달음
- 나 스스로 정리하고 갈무리하는 작업이 중요해졌기 떄문에, 이쪽에 좀더 집중해야겠다
Author And Source
이 문제에 관하여(und. 28 - SQL 사용하여 DB 다루기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@navigo1024/Fund.-28-SQL-사용하여-DB-다루기
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
- DB를 연결한다
- SQL문을 실행한다
- DB 연결을 닫는다
connect()
, close()
, commit()
, rollback()
PEP 249
큰 데이터들을 다루다보니 데이터베이스에서의 작업도 얼마나중요한지 생각해보게 되었다.
추후 프로젝트에서 사용해보면 어떨까? 사용법 대략 기억하기위해서 기록
- 데이터 베이스에 연결하는 객체를 선언한다
import sqlite3 # SQLite 인터페이스 파이썬 표준 라이브러리
import os
db_path = os.getenv("HOME") + '/mydb.db'
conn = sqlite3.connect(db_path)
print(conn)
DB 핸들링 시나리오
- cursor는 QUERY를 수행하고 결과를 얻는데 사용하는 객체다(습관적으로 사용해도 좋음)
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()
- DB를 실제로 업데이트
- transaction 관리
conn.commit()
# 종료 프로세스
c.close() # 커서를 먼저 닫고,
conn.close() # DB 연결을 닫아준다.
쿼리 기본 구조
SELECT
FROM
WHERE
GROUP BY
ORDER BY
LIMIT 숫자
말하는거랑 생각보다 비슷하네??
언어 개발자들은 참 똑똑해(얼마나 고생했으면ㅜ)
WHERE 조건문
- 특정 문자열을 포함하는 row를 가져옴
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" ;
- NULL 조건 다루기
SELECT * FROM 도서대출내역
WHERE 반납일 IS NOT NULL;
JOIN
중첩 질의 Nested Query
- 선행 쿼리의 결과로부터 다시 쿼리를 수행하는 구조
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)
IFNULL()
CASE
SELECT 이름,
CASE WHEN condition > 5
THEN A
ELSE B
작업 도중 틈틈히 확인하면서 익힐 수 있도록
새롭게 알게 된 것들
- SQL은 해봐야지 생각만 하고 있다가, 직접 접해보는것은 처음인데 꽤 익숙한 느낌이 들었다
- 역시 한 가지의 언어로는 제약되는 것이 많아 다양하게 익히는 것이 필요할 것 같다(마르코형님이 이야기했던대로 연봉도 올라가겠지?)
- 자주 사용하는 라이브러리의 요악 or cheet sheet 를 만들어두는 것이 자주 도움이 될 것 같다
한 주의 회고
- 딥한 내용들이 계속이어져서 체력적으로 조금 지치는 느낌.
- 언제고 다시 참고해 쓸만한 내용들이 즐비하게 나오고 있어 충실한 느낌
- 두 가지 느낌이 섞여서 다짐을 해보지만
다음 주의 다짐
- 혼자 일을 하는 것보다, 함께 했을 때 더 멀리 간다는 말이 자주 떠오른다 여러가지 시도해보고 싶은것들이 생겨남
- 개발 분야의 일은 개발 자체도 중요하지만 일상의 리듬을 확보하는 일이 굉장히 큰 영향을 미친다는걸 꺠달음
- 나 스스로 정리하고 갈무리하는 작업이 중요해졌기 떄문에, 이쪽에 좀더 집중해야겠다
Author And Source
이 문제에 관하여(und. 28 - SQL 사용하여 DB 다루기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@navigo1024/Fund.-28-SQL-사용하여-DB-다루기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)