n314_DB API

ssu_hyun·2021년 9월 22일
1

[codestates] AI Bootcamp

목록 보기
28/62

학습 목표

  • 파이썬을 활용해 데이터베이스와 연결할 수 있다.
    : sqlite 데이터베이스(파일형 데이터베이스) 활용 및 연결로 데이터베이스와 상호작용하는 방법을 알아보고 데이터베이스 서버와 연결하는 방법(PostgreSQL)에 대해서 알아보겠습니다.

python dbapi

PEP 249

  • 파이썬에서 명시하는 DBAPI v2.0 에 대한 문서
  • 데이터베이스와 연결하는 파이썬 모듈들의 권장되는 가이드라인(함수들, 메소드, 파라미터, 키워드)

SQLite

SQLite 데이터베이스는 기본적으로 파이썬과 함께 설치되는 가벼운 관계형 데이터베이스로 여타 다른 데이터베이스 서버를 사용하는 관계형 데이터베이스들에 비해 기능이 제한적이다. 즉, PostgreSQL과 같이 데이터베이스 서버를 띄우고 작업하지 않고 SQL을 사용할 때 기능적 제한으로 복잡하거나 고급 쿼리 등은 실행하기 어렵다. 또한 파일형 데이터베이스로 메모리에 상주할 수 있기 때문에 파일을 삭제하거나 프로세스 종료 등으로 인한 데이터 손실도 주의해야 한다. 하지만 이러한 부분들은 간단하고 빠르게 데이터베이스를 구축하거나 개발 단계에서 단순한 실험 등을 진행할 경우 장점이 된다.


데이터베이스 연결

  • connect > cursor > execute > commit
import sqlite3

# connect to database
conn = sqlite3.connect('test.db')
#램에 데이터베이스를 만들 수 있다.
conn = sqlite3.connect(':memory:')


# create cursor object
cur = conn.cursor


# Create table
cur.execute("""CREATE TABLE test_table (
				name VARCHAR(32),
				age INT);
			""")


# Insert a row of data
# 방법1
cur.execute("INSERT INTO test_table (name, age) VALUES ('spongebob', 12);")
# 방법2
users = [('lemon', 10),
         ('apple', 15)]

for user in users:
    cur.execute("INSERT INTO test_table (name, age) VALUES (?, ?);", user)


# Save (commit) the changes
conn.commit()


# Lookup Data added
cur.fetchone()  
cur.fetchmany()
cur.fetchall()
# fetchone으로 연속으로 계속 데이터 조회하면 모든 데이터 조회하는 효과(데이터를 가리키는 커서가 하나씩 뒤로 밀리게 됨)

# We can also close the connection if we are done with it.
# Just be sure any changes have been committed or they will be lost.
con.close()

클라우드 데이터베이스

  • 클라우드 데이터베이스 : AWS(아마존), GCD(구글)
  • 온프레미스 : 서버를 구축하여 데이터베이스를 직접 관리하는 방식

URI

  • 클라우드 데이터베이스에 연결하기 위한 주소 형식
  • 원격으로 연결을 할 때, 논리적 혹은 물리적 리소스를 찾을 때, 네트워크에서 정보를 찾거나 받아올 때 사용되는 형식
  • URI \supset URL

서비스://유저_이름:유저_비밀번호@호스트:포트번호/경로

  • 호스트 : 서버의 주소 정보
  • 포트번호 : 서버의 주소에 해당하는 프로그램의 번호
  • 경로 : 혹은 데이터베이스 이용 -> main_db

ex) postgres://admin:password@databases.com:5432/main_db

클라우드 데이터베이스 인스턴스 생성


0개의 댓글