Students Save 30%! Learn & create with unlimited courses & creative assets Students Save 30%! Save Now
Advertisement
  1. Code
  2. Python
Code

파이썬으로 데이터베이스 처리하기

by
Difficulty:IntermediateLength:ShortLanguages:

Korean (한국어) translation by Dae-yeop Lee (you can also view the original English article)

우리가 살고 있는 정보화 시대에 우리는 세계가 얼마나 많은 양의 데이터를 교환하고 있는지 알 수 있습니다. 우리는 기본적으로 광범위하게 데이터를 생성, 저장, 검색합니다! 이 모든 것을 처리할 수 있는 방법이 있어야 합니다. 아무런 관리 없이 데이터가 도처에 퍼질 수는 없을 것입니다. 바로 여기서 데이터베이스 관리 시스템 (DBMS; Database Management System)이 등장합니다.

DBMS는 데이터베이스의 데이터에 대한 생성, 저장, 수정, 조회 등을 처리할 수 있는 소프트웨어 시스템입니다. 이러한 시스템의 규모는 개인용 컴퓨터에서 실행되는 소형 시스템에서부터 메인프레임에서 실행되는 대형 시스템에 이르기까지 다양합니다.

이 튜토리얼의 초점은 데이터베이스 설계가 아닌 파이썬에 있습니다. 그렇습니다. 파이썬은 데이터베이스와 원활하게 상호작용할 수 있으며, 이 튜토리얼에서 보여드리고자 하는 것도 바로 이러한 파이썬과 데이터베이스와의 상호작용입니다.

그럼 시작해봅시다!

파이썬 데이터베이스 API

앞에서 언급했듯이 파이썬은 데이터베이스와 상호작용할 수 있습니다. 그런데 어떻게 할 수 있을까요? 파이썬은 데이터베이스와 인터페이스하기 위해 파이썬 데이터베이스 API라는 것을 사용합니다. 이 API를 이용하면 다른 데이터베이스 관리 시스템(DBMS)을 프로그래밍할 수 있습니다. 그러나 다른 DBMS의 경우 코드 수준에서 수행되는 프로세스는 다음과 같습니다.

  1. 선택한 데이터베이스에 대한 연결(connection)을 설정
  2. 데이터 전달을 위한 커서(cursor)를 생성
  3. SQL을 이용해 데이터를 조작(상호작용)
  4. SQL 조작을 데이터에 적용한 후 이를 영구적으로 반영하거나(커밋) 그러한 조작을 중단시켜(롤백) 상호작용이 발생하기 전의 상태로 데이터를 되돌리도록 연결에 지시
  5. 데이터베이스에 대한 연결을 닫음(close)

SQLite

SQLite는 오픈소스이자 모든 기능을 갖춘 독립형(외부 라이브러리를 거의 필요로 하지 않음), 서버리스(서버가 데이터베이스 엔진을 실행하지 않아도 되고 로컬에 저장된 데이터베이스), 제로 설정(설치하거나 설정할 것이 아무것도 없음), SQL 기반 경량 데이터베이스 관리 시스템(SQL 쿼리가 SQLite 테이블을 대상으로 실행될 수 있음)으로서 하나의 데이터 파일을 사용해 데이터를 저장합니다.

SQLite의 좋은 점은 SQLite가 구글, 애플, 마이크로소프트 등의 대기업에서 사용되므로 매우 안정적이라는 것입니다. 이 튜토리얼에서는 SQLite를 사용해 데이터베이스와 상호작용하고 더 구체적으로 파이썬에서 sqlite3 모듈을 사용할 것입니다.

파이썬과 SQLite

앞에서 언급했듯이 데이터베이스 작업은 5가지 주요 단계로 이뤄집니다. 그럼 각 단계를 구체적으로 살펴보겠습니다.

1. 선택한 데이터베이스에 대한 연결을 설정

이 단계는 다음과 같이 이뤄집니다.

conn = sqlite3.connect('company.db')

sqlite3 문서에는 다음과 같이 적혀 있습니다:

이 모듈을 사용하려면 먼저 데이터베이스를 나타내는 Connection 객체를 만들어야 합니다.

위 코드에서 데이터는 company.db 파일에 저장됩니다.

2. 데이터 전달을 위한 커서를 생성

데이터베이스 작업의 다음 단계는 다음과 같이 커서를 만드는 것입니다:

curs = conn.cursor()

3. SQL을 이용해 데이터를 조작

데이터베이스와 연결하고 커서를 생성하고 나면 이제 데이터를 작업(상호작용)할 준비가 끝납니다. 즉, 이제 company.db 데이터베이스에 대해 SQL 명령을 실행할 수 있습니다.

company 데이터베이스에 employee라는 새 테이블을 만들고 싶다고 가정해 봅시다. 이 경우 SQL 명령을 실행해야 합니다. 이를 위해 sqlite3 모듈의 execute() 메서드를 사용할 것입니다. 파이썬 코드는 다음과 같을 것입니다.

curs.execute('create table employee(name, age)')

이 구문은 nameage라는 두 개의 열(필드)이 포함된 employee라는 테이블을 생성하는 SQL 명령을 실행합니다.

이제 다음과 같이 테이블에 데이터를 삽입할 새 SQL 명령을 실행할 수 있습니다.

curs.execute("insert into employee values ('Ali', 28)")

다음과 같이 한 번에 여러 개의 값을 삽입할 수도 있습니다.

values = [('Brad',54), ('Ross', 34), ('Muhammad', 28), ('Bilal', 44)]

이 경우 execute() 메서드를 사용하는 대신 executemany() 메서드를 사용해 위의 여러 값을 실행합니다.

curs.executemany('insert into employee values(?,?)', values)

4. 변경사항 커밋

이 단계에서는 이전 단계에서 변경한 내용을 적용(커밋)하고 싶습니다. 이를 다음과 같이 간단하게 처리할 수 있습니다.

conn.commit()

5. 데이터베이스에 대한 연결 닫기

데이터베이스 조작을 수행하고 변경사항을 커밋하고 나면 마지막 단계는 연결을 닫는 것입니다.

conn.close()

이 모든 단계를 하나의 스크립트로 정리해 봅시다. 그럼 프로그램은 다음과 같을 것입니다(먼저 sqlite3 모듈을 임포트해야 합니다):

스크립트를 실행하면 현재 디렉터리에 company.db라는 파일이 만들어집니다. 이 파일을 다운로드하면 다음 단계에서 사용할 수 있습니다.

이제 데이터베이스 내부를 둘러봅시다.

데이터베이스와 테이블을 만들고 데이터를 추가한 상태에서 company.db(앞 절에서 다운로드한 파일) 안에 뭐가 들어있는지 살펴봅시다. 이를 위해 DB Browser for SQLite라는 멋진 도구를 사용하겠습니다. 컴퓨터에 이 도구를 내려받습니다. 프로그램을 열면 다음과 같은 화면이 나타납니다.

DB Browser for SQLite home screen

상단의 Open Database 버튼을 이용해 데이터베이스를 엽니다.이 경우 다음과 같이 Database Structure가 나타납니다.

DB Browser for SQLite Database Structure screen

nameage라는 두 개의 필드가 포함된 employee 테이블이 나열되는 것을 볼 수 있습니다.

위의 코드가 작동하고 데이터가 테이블에 추가됐는지 확인하기 위해 Browse Data 탭을 클릭합니다. 그럼 다음과 같은 화면을 볼 수 있습니다.

DB Browser for SQLite Browse Data tab

그럼 보다시피 데이터베이스(company)와 테이블(employee)이 생성됐고 데이터가 테이블에 성공적으로 추가된 것을 볼 수 있습니다.

이 튜토리얼에서는 파이썬을 이용해 데이터베이스 작업을 시작할 수 있도록 맛보기만 보여줬습니다. sqlite3 모듈에서 제공하는 더 많은 메서드에 대해 배울 수 있으며, 이 모듈을 통해 데이터베이스 업데이트 및 쿼리와 같은 다양한 데이터베이스 연산을 수행할 수 있을 것입니다. 그럼 재밌게 놀아보십시오!

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.