본문 바로가기
코드스테이츠 AI 부트캠프/Section 4

DB API(DataBase Application Programming Interface)

by yunyoung424 2023. 5. 24.

DB API (2023.05.24)

 

부트캠프를 시작하고 프로젝트를 해오면서 API를 정말 많이 들어왔는데, 드디어 오늘 API에 대해 배웠다.


[ 주요 개념]

API

한 프로그램에서 다른 프로그램으로 데이터를 주고받기 위한 방법

 

DB API (= DataBase Application Programming Interface)

DB와 프로그래밍 언어가 서로 소통 할 수 있게 만들어 주는 약속

Interface

  • 인터페이스 = '약속'
    ex) A라는 함수를 호출하면 B라는 결과가 리턴된다. 티비 리모컨, 노트북 전원 버튼을 누르면 전원이 켜진다 등.
  • API는 덩치가 큰 인터페이스로 생각해도 된다
  • 인터페이스 함수를 만들 때 고려해야하는 4가지!
    1. 직관적인 입출력
    2. 성능 요구사항
    3. 하위호환지원
    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

 

댓글