Python에서 SQL 사용

기타 2020. 10. 2. 20:30

1. SQL Introduction

SQL이란 Structured Query Language의 약어로 관계형 데이터베이스의 데이터를 관리하기 위해서 만들어진 프로그래밍 언어이다. 1974년 IBM 연구소에서 SEQUEL이라는 이름으로 시작했고, 질의어(Query Language)지만 데이터 구조의 정의부터 조작, 제어 기능을 갖추고 있다. Oracle, MySQL 등의 데이터베이스 관련 프로그램들은 이 SQL을 표준으로 사용한다.

 


2. SQL 분류

SQL은 사용 용도에 따라 데이터 정의 언어(DDL), 데이터 조작 언어(DML), 데이터 제어 언어(DCL)의 3가지로 구분된다.

 

1) 데이터 정의 언어

DOMAIN, INDEX, SCHEMA, TABLE, VIEW 등의 데이터베이스 개체를 정의, 변경 혹은 삭제를 할 때 사용하며 명령어와 기능은 다음과 같다.

명령어 기능
CREATE 데이터베이스 개체 정의
ALTER 데이터베이스 개체 정의 변경
DROP 데이터베이스 개체 삭제

 

2) 데이터 조작 언어

저장된 데이터베이스를 처리하는 데 사용되며, 사용자와 시스템 간의 인터페이스를 제공한다. 해당 명령어와 기능은 다음과 같다.

명령어 기능
SELECT 조건에 맞는 튜플 검색
INSERT 새로운 튜플 삽입
UPDATE 조건에 맞는 튜플 내용 변경
DELETE 조건에 맞는 튜플 삭제

 

3) 데이터 제어 언어

데이터의 보안이나 수행 제어와 관련된 사항 등 데이터 관리를 목적으로 사용되며, 종류는 다음과 같다.

명령어 기능
COMMIT 명령에 의해 수행된 결과를 저장한 후, 작업이 정상적으로 완료되었음을 알려줌
ROLLBACK 데이터베이스 작업이 비정상적으로 종료된 경우 원래대로 복구
GRANT 데이터 사용자에게 사용 권한 부여
REVOKE 데이터 사용자의 사용 권한 철회

 


3. Python에서 SQL 사용 예제

import sqlite3

connect = sqlite3.connect('stocks.db')
cursor = connect.cursor()

#Create TABLE
cursor.execute("CREATE TABLE stocks (date text, state text, item text, quantity real, price real)")

#INSERT data
cursor.execute("INSERT INTO stocks VALUES ('2020-05-12', 'IN', 'samsung', 30, 47900)")
cursor.execute("INSERT INTO stocks VALUES ('2020-05-26', 'IN', 'lg', 30, 57100)")
cursor.execute("INSERT INTO stocks VALUES ('2020-06-11', 'IN', 'samsung', 20, 54300)")
cursor.execute("INSERT INTO stocks VALUES ('2020-07-24', 'OUT', 'lg', 10, 74100)")
cursor.execute("INSERT INTO stocks VALUES ('2020-08-10', 'OUT', 'samsung', 15, 57800)")

#Save and Close
connect.commit()
connect.close()

#Reconnect
enter = sqlite3.connect('stocks.db')
cursor = enter.cursor()

#Find item
item = ('samsung',)
cursor.execute('SELECT * FROM stocks WHERE item=?', item)
print(cursor.fetchall())
enter.close()

sqlite3을 import한 후에 주식을 매입하고 매매하는 stocks.db에 접속한다. stocks.db가 없다면 새로 생성하게 된다. cursor라는 변수를 사용해서 stocks라는 이름의 TABLE을 생성한 후 주식 거래 내역을 INSERT로 삽입한다. commit()함수로 저장하고, close()함수로 stocks.db의 연결을 중지한다. 다시 stocks.db에 접속해서 원하는 item을 출력하면 위와 같이 나타나게 된다.

728x90
반응형

'기타' 카테고리의 다른 글

VI Editor  (0) 2020.09.05
왜 리눅스일까?  (0) 2020.07.04
API란?  (0) 2020.07.01
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기