본문 바로가기
Study/Python

[Python #8] Database

by YOONAYEON 2021. 12. 14.
데이터베이스

 

- 수시로 조회하고 변경해야 하는 대용량의 복잡한 정보는 직접 관리가 힘들다.

- 정보를 단순 저장뿐만 아니라 효율적으로 관리하기 위한 시스템이 바로 DB이다.

 

 

* 관계형 데이터베이스

- 관계형 DB는 테이블에서의 행과 열을 이용하여 데이터를 모델링

- 단일 테이블이나 복잡하게 얽혀있는 다중 테이블에서 데이터를 효율적으로 추출

- 용어

  데이터베이스 : 여러 개의 테이블

  릴레이션(테이블) : 튜플과 속성을 포함

  튜플(row) : 이름처럼 객체를 표현할 수 있는 필드의 집합

  속성(column/필드) :  객체를 나타내는 row에 있는 데이터 중 하나

 

 

* SQL (Structured Query Language)

- db에 명령을 내리기 위해 사용하는 언어

- 테이블 모양(스키마) 기술

- 데이터 삽입, 삭제, 업데이트, 검색

 

 

* 데이터베이스 모델

- db시스템이 지원하는 형식 언어로 표현된 데이터베이스의 구조를 지칭

- 데이터베이스 스키마 라고도 함

 

 

* 주요 데이터베이스 관리 시스템

- Oracle : 크고 상업적이며 기업 단위로 사용

- MySql : 간단하나 매우 빠르고 확장이 용이, 상업적인 오픈소스

- SqlServer : 마이크로소프트가 만듬

 

 

 

SQLite

  

- 리처드 힙 박사가 개발한 SQLite는 무료 DBMS여서 누구나 사용 가능

- 경량형 DBMS라 소규모에 적합하고 일반적인 정보 저장용으로 충분

- 여러 소프트웨어에서 사용되어지고 있음

- 파이썬은 SQLite에 대한 라이브러리를 기본 내장하고 있음

 

 

- 데이터 삽입

 

import sqlite3

con = sqlite3.connect('addr.db')	#addr.db라는 DB오픈
cursor = con.cursor()

ursor.execute("DROP TABLE IF EXISTS tblAddr") # 테이블이 이미 존재하면 drop
cursor.execute("""CREATE TABLE tblAddr 		  # 테이블 생성
				(name CHAR(16) PRIMARY KEY, phone CHAR(16), addr TEXT)""")

# 데이터 삽입
cursor.execute("INSERT INTO tblAddr VALUES ('홍길동', '123-4567', '서울')")
cursor.execute("INSERT INTO tblAddr VALUES ('이몽룡', '678-1123', '부산')")
cursor.execute("INSERT INTO tblAddr VALUES ('성춘향', '445-1033', '대전')")

con.commit() # 테이블 변경 후 변경을 확정. 안할 시 아무것도 적용되지 않음

# 자원 정리
cursor.close()
con.close()

 

 

- 데이터 조회

 

import sqlite3

con = sqlite3.connect('addr.db')
cursor = con.cursor()

cursor.execute('SELECT * FROM tblAddr')
table = cursor.fetchall() 	# 모든 레코드를 한번에 읽어 리스트로 리턴
for record in table: 		# 리스트 순회하며 레코드를 하나씩 꺼내 출력
	print("이름 : %s, 전화 : %s, 주소 : %s" % record)
    
#또는
while True:
	record = cursor.fetchone() 		# 한 번에 레코드 하나를 읽음
	if record == None: 				# 더 읽을 레코드가 없어 None을 반환하면 반복문 탈출
		break
	print("이름 : %s, 전화 : %s, 주소 : %s" % record)

cursor.close()
con.close()

 

 

- 데이터 수정 및 삭제

 

import sqlite3

con = sqlite3.connect('addr.db')
cursor = con.cursor()

# 이름이 홍길동인 사람을 찾아 addr을 제주로 변경
cursor.execute("UPDATE tblAddr SET addr = '제주' WHERE name = '홍길동'")
con.commit()	# 해야 반영

cursor.close()
con.close()

 

 

'Study > Python' 카테고리의 다른 글

[Python #7] Multiple Connections, Web Scrapping  (0) 2021.12.14
[Python #6] Network  (0) 2021.11.24
[Python #5] Class, Module, Package  (0) 2021.10.31
[Python #5] Dictionary, Set, Collection  (0) 2021.10.10
[Python #4] File  (0) 2021.10.07