DB API (2023.05.24)
부트캠프를 시작하고 프로젝트를 해오면서 API를 정말 많이 들어왔는데, 드디어 오늘 API에 대해 배웠다.
[ 주요 개념]
API
한 프로그램에서 다른 프로그램으로 데이터를 주고받기 위한 방법
DB API (= DataBase Application Programming Interface)
DB와 프로그래밍 언어가 서로 소통 할 수 있게 만들어 주는 약속
Interface
- 인터페이스 = '약속'
ex) A라는 함수를 호출하면 B라는 결과가 리턴된다. 티비 리모컨, 노트북 전원 버튼을 누르면 전원이 켜진다 등. - API는 덩치가 큰 인터페이스로 생각해도 된다
- 인터페이스 함수를 만들 때 고려해야하는 4가지!
- 직관적인 입출력
- 성능 요구사항
- 하위호환지원
- 쉬운 접근성과 대중성
- reference 영상
PEP 249 (Python DB API Specification)
- 파이썬과 DB가 연결되기 위해 파이썬 패키지들이 지켜야 할 함수, 키워드, 파라미터들에 대한 정의서
⇒ 가이드 문서 / 정석같은 느낌
SQLite : DB 이름
- 파이썬과 함께 설치되는 가벼운 관계형 DB
- 가볍기 때문에 기능이 제한적이지만 설치가 간편하고 여러 가지 실험을 하기엔 적합하다.
- 파일형 데이터베이스이며, 실행 중인 프로그램의 메모리에 상주할 수 있기 때문에 파일을 삭제하거나 프로세스 종료 등으로 인한 데이터 손실도 주의해야 한다.
SQLite3 : 파이썬 패키지
- SQLite3이라는 패키지를 이용하여 SQLite라는 DB에 연결하고 사용
- Connection 객체가 close될 때까지 test.db와 연결이 유지된다.
⇒ Session이 열렸다고도 표현한다. - Cursor 역할
- SQL문 실행
- 실행된 SQL 쿼리 결과는 Table형태로 출력되는데, 이 결과를 행 by 행으로 읽어 내려감
데이터베이스 연결
sqlite3의 connect 메서드를 활용해 데이터베이스 파일의 위치를 알려주면 됨
import sqlite3
conn = sqlite3.connect('test.db')
conn 은 데이터베이스와 연결된 하나의 세션을 보관한다.
- 데이터베이스와 소통하기 위한 cursor 만들기
cur = conn.cursor()
커서 메소드
cursor.execute
가장 기본적인 데이터베이스 소통 방식은 커서의 execute 메소드를 활용하는 것
이 메서드의 인수로는 SQL 쿼리문을 바로 넘겨줄 수 있다.
- 테이블 생성
cur.execute("""CREATE TABLE test_table (
name VARCHAR(32),
age INT);
""")
- 데이터 추가
cur.execute("INSERT INTO test_table (name, age) VALUES ('spongebob', 12);")
# 아래와 같은 방법 가능
name = 'banana'
age = 13
cur.execute("INSERT INTO test_table (name, age) VALUES (?, ?)",(name,age))
데이터베이스를 확인해 보면 아직 데이터가 입력되지 않은 상태!! ⇒ Commit을 해주어야 함
con.commit
conn.commit()
cursor.fetchone, cursor.fetchall
- 데이터 조회 (fetchone, fetchmany, fetchall 등을 활용)
cur.fetchall()
cur.fetchone()
cur.fetchmany()
- fetchall : 리스트 형식으로 쿼리를 통해 실행된 결과 리턴
- fetchone : 데이터베이스에서 전달하는 결과에서 첫 번째만 리턴
클라우드 데이터베이스
Cloud DB : 원격으로 관리되는 데이터베이스 → DB 접근을 위해 정보가 필요
Cloud DB vs On-Premise
- Cloud DB : 원격 저장소 이용하는 방법
- 장점 : 초기비용 ⬇️, 간편하고 관리가 쉬움(대신해주기 때문에)
- 단점 : 서버이용비용, 보안문제
- On-Premise : 직접 관리하는 방법
- 장점 : 보안 ⬆️, 속도 ⬆️
- 단점 : 초기비용 ⬆️, 관리비용(직원고용) ⬆️
URI
- 외부에 있는 논리적 또는 물리적 리소스를 찾을 때 사용
- 네트워크에서 정보를 찾거나 받아올 때 사용될 수 있다.
서비스://유저_이름:유저_비밀번호@호스트:포트번호/경로
- 서비스: postgres
- 유저 이름(id): user
- 유저 비밀번호(key): password
- 호스트(서버주소정보): databases.com
- 포트번호(서버주소에 해당하는 프로그램 번호): 5432
- 경로(DB 이름): main_db
postgres://user:password@databases.com:5432/main_db
'코드스테이츠 AI 부트캠프 > Section 4' 카테고리의 다른 글
API(Application Programming Interface) (0) | 2023.05.31 |
---|---|
Web Scraping (웹 스크레이핑) (0) | 2023.05.30 |
Python 활용(디버깅, 함수, 클래스, 데코레이터) (0) | 2023.05.30 |
SQL(Structured Query Language) (0) | 2023.05.23 |
개발 환경 (0) | 2023.05.23 |
댓글