[파이썬] Flask에서의 NoSQL 데이터베이스 연동

Flask는 파이썬 웹 애플리케이션을 개발하기 위한 경량급 프레임워크이다. Flask를 사용하여 애플리케이션을 개발할 때, 데이터베이스 연동이 필요한 경우가 많다. 이번 글에서는 Flask에서의 NoSQL 데이터베이스 연동에 대해 알아보고, 실제로 어떻게 연동하는지 예제 코드를 통해 설명하겠다.

NoSQL 데이터베이스란?

NoSQL은 “Not Only SQL”의 약자로, 관계형 데이터베이스가 아닌 다른 형태의 데이터베이스를 의미한다. NoSQL 데이터베이스는 특정한 스키마에 따라 데이터를 저장하지 않고, 유연한 구조로 데이터를 저장하고 조회한다. 대표적인 NoSQL 데이터베이스로는 MongoDB, Redis, Cassandra 등이 있다. 이러한 NoSQL 데이터베이스는 스케일아웃이 용이하며, 비정형 데이터를 다루기에 적합하다.

Flask에서 NoSQL 데이터베이스 연동하기

Flask에서 NoSQL 데이터베이스를 연동하려면 해당 데이터베이스를 다룰 수 있는 써드파티 라이브러리를 사용해야 한다. 여기서는 MongoDB를 예제로 들어 MongoDB와 Flask를 연동하는 방법을 설명한다.

1. 필요한 라이브러리 설치

먼저 Flask에서 MongoDB를 사용하기 위해서는 pymongo 라이브러리를 설치해야 한다. 다음 명령어로 pymongo를 설치한다.

pip install pymongo

2. MongoDB 연결 설정

Flask 애플리케이션에서 MongoDB에 연결하기 위해선 pymongo를 사용하여 Connection 객체를 생성해야 한다. 이 객체를 통해 MongoDB와의 연결을 유지하고 다양한 작업을 수행할 수 있다.

from flask import Flask
from pymongo import MongoClient

app = Flask(__name__)

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

3. 데이터 CRUD 작업

MongoDB의 컬렉션을 사용하여 데이터를 생성(Create), 조회(Read), 업데이트(Update), 삭제(Delete)할 수 있다.

데이터 생성(Create):

@app.route('/create', methods=['POST'])
def create_data():
    data = {
        'name': 'John Doe',
        'email': 'john@example.com'
    }
    result = collection.insert_one(data)
    return str(result.inserted_id)

데이터 조회(Read):

@app.route('/read')
def read_data():
    result = collection.find()
    data = [doc for doc in result]
    return str(data)

데이터 업데이트(Update):

@app.route('/update/<id>', methods=['PUT'])
def update_data(id):
    query = {'_id': id}
    new_data = {'$set': {'email': 'updated@example.com'}}
    result = collection.update_one(query, new_data)
    return str(result.modified_count)

데이터 삭제(Delete):

@app.route('/delete/<id>', methods=['DELETE'])
def delete_data(id):
    result = collection.delete_one({'_id': id})
    return str(result.deleted_count)

4. Flask 애플리케이션 실행

if __name__ == '__main__':
    app.run()

Flask 애플리케이션을 실행하면 웹 서버가 시작되고, 정의한 라우트에 따라 MongoDB와 데이터를 주고받을 수 있다.

이렇게 Flask에서 NoSQL 데이터베이스를 연동하는 방법을 알아보았다. 실제로 NoSQL 데이터베이스는 Flask를 포함한 다양한 웹 프레임워크에서 많이 사용되며, 유연한 데이터 구조와 스케일 아웃 가능성을 제공한다.