[python] 파이썬에서 MongoDB의 GridFS를 이용한 파일 관리

MongoDB는 일반적으로 문서형 데이터베이스로 알려져 있지만, 그리드 파일 시스템(GridFS)을 통해 파일 형태의 데이터를 저장 및 관리할 수도 있습니다. 이번 글에서는 파이썬에서 MongoDB의 GridFS를 사용하여 파일을 업로드, 다운로드 및 삭제하는 방법에 대해 알아보겠습니다.

GridFS란?

GridFS는 MongoDB에서 대용량의 파일을 처리하기 위한 파일 시스템입니다. MongoDB는 한 문서의 최대 크기를 16MB로 제한하기 때문에, 이보다 큰 파일을 저장해야 할 때는 GridFS를 사용합니다. GridFS는 파일을 여러 개의 청크(chunk)로 나누어 저장하며, 각 청크는 MongoDB의 컬렉션에 저장됩니다.

GridFS 모듈 설치

먼저, 파이썬에서 GridFS를 사용하기 위해서는 pymongo라이브러리를 설치해야 합니다. 다음 명령을 사용하여 pymongo를 설치합니다.

pip install pymongo

그리고 나서, pymongo를 import 합니다.

import pymongo

파일 업로드

파일을 업로드하기 위해서는 다음과 같은 단계를 따릅니다.

  1. pymongo를 사용하여 MongoDB에 연결합니다.
  2. gridfs를 사용하여 GridFS 인스턴스를 생성합니다.
  3. open 메소드를 사용하여 파일을 엽니다.
  4. put 메소드를 사용하여 파일을 GridFS에 저장합니다.

다음은 파일을 업로드하는 예제입니다.

from pymongo import MongoClient
from gridfs import GridFS

# MongoDB에 연결
client = MongoClient('mongodb://localhost:27017/')
db = client['mydatabase']

# GridFS 인스턴스 생성
fs = GridFS(db)

# 파일 열기
with open('example.txt', 'rb') as f:
    # 파일을 GridFS에 저장
    file_id = fs.put(f, filename='example.txt')

print('File uploaded with ID:', file_id)

파일 다운로드

파일을 다운로드하기 위해서는 다음과 같은 단계를 따릅니다.

  1. pymongo를 사용하여 MongoDB에 연결합니다.
  2. gridfs를 사용하여 GridFS 인스턴스를 생성합니다.
  3. find_one 메소드를 사용하여 파일을 찾습니다.
  4. read 메소드를 사용하여 파일을 읽습니다.

다음은 파일을 다운로드하는 예제입니다.

from pymongo import MongoClient
from gridfs import GridFS

# MongoDB에 연결
client = MongoClient('mongodb://localhost:27017/')
db = client['mydatabase']

# GridFS 인스턴스 생성
fs = GridFS(db)

# 파일 찾기
file = fs.find_one({'filename': 'example.txt'})

# 파일 읽기
data = file.read()

# 파일 저장
with open('downloaded.txt', 'wb') as f:
    f.write(data)

print('File downloaded successfully')

파일 삭제

파일을 삭제하기 위해서는 다음과 같은 단계를 따릅니다.

  1. pymongo를 사용하여 MongoDB에 연결합니다.
  2. gridfs를 사용하여 GridFS 인스턴스를 생성합니다.
  3. delete 메소드를 사용하여 파일을 삭제합니다.

다음은 파일을 삭제하는 예제입니다.

from pymongo import MongoClient
from gridfs import GridFS

# MongoDB에 연결
client = MongoClient('mongodb://localhost:27017/')
db = client['mydatabase']

# GridFS 인스턴스 생성
fs = GridFS(db)

# 파일 삭제
fs.delete(file_id)

print('File deleted successfully')

이렇게 파이썬에서 MongoDB의 GridFS를 사용하여 파일을 업로드, 다운로드 및 삭제할 수 있습니다. GridFS를 사용하면 MongoDB에서 파일을 효율적으로 관리할 수 있으므로, 대용량 파일을 다루는 애플리케이션 개발에 유용합니다.

참고 자료: