Flask는 가벼운 웹 프레임워크로서 파이썬으로 웹 애플리케이션을 빠르고 쉽게 개발할 수 있게 도와줍니다. 그리고 mongoengine
은 MongoDB와 상호작용할 수 있는 객체 문서 매퍼입니다. 이번 블로그 포스트에서는 mongoengine
을 Flask 애플리케이션과 통합하여 데이터베이스를 사용하는 방법에 대해 알아보겠습니다.
1. Flask와 MongoDB 연결하기
먼저, Flask 애플리케이션과 MongoDB를 연결해야 합니다. Flask에서는 pymongo
라이브러리를 사용하여 MongoDB와 연결할 수 있습니다.
from flask import Flask
from flask_pymongo import PyMongo
app = Flask(__name__)
# MongoDB 설정
app.config["MONGO_URI"] = "mongodb://localhost:27017/mydatabase"
mongo = PyMongo(app)
위의 코드에서 app.config["MONGO_URI"]
를 사용하여 MongoDB의 연결 URI를 설정합니다. 이 예제에서는 로컬 호스트의 포트 27017에 위치한 “mydatabase” 데이터베이스에 연결합니다.
2. mongoengine
으로 데이터 모델링하기
이제 mongoengine
을 사용하여 MongoDB 데이터 모델을 정의할 수 있습니다. 데이터 모델은 MongoDB 컬렉션에 대한 스키마와 필드를 정의합니다.
from mongoengine import Document, StringField, DateTimeField
class User(Document):
name = StringField(required=True)
email = StringField(required=True)
created_at = DateTimeField()
위의 코드에서 User
클래스는 mongoengine
의 Document
클래스를 상속받고 있습니다. 이 클래스는 MongoDB의 컬렉션에 대응되며, name
, email
, created_at
필드를 정의하고 있습니다.
3. Flask 애플리케이션에서 mongoengine
사용하기
Flask 애플리케이션 내에서 mongoengine
을 사용하려면 몇 가지 설정을 추가해야 합니다. Flask 애플리케이션에 mongoengine
연결을 초기화하고 문서 클래스를 등록해야 합니다.
from flask_mongoengine import MongoEngine
app.config["MONGODB_SETTINGS"] = {
"db": "mydatabase",
"host: "localhost",
"port": 27017
}
db = MongoEngine(app)
# 문서 클래스 등록
db.register_connection(
host=app.config.get("MONGODB_SETTINGS")["host"],
port=app.config.get("MONGODB_SETTINGS")["port"],
db=app.config.get("MONGODB_SETTINGS")["db"]
)
위의 코드에서 app.config["MONGODB_SETTINGS"]
를 사용하여 MongoDB 연결 설정을 정의합니다. 그리고 MongoEngine
객체를 생성하여 app
과 연결합니다. 마지막으로 db.register_connection()
을 통해 문서 클래스를 등록합니다.
4. 데이터베이스 작업 수행
이제 Flask 애플리케이션에서 mongoengine
을 사용하여 데이터베이스 작업을 수행할 수 있습니다. 예를 들어, 사용자를 생성하고 조회하는 코드는 다음과 같습니다.
@app.route("/users", methods=["POST"])
def create_user():
name = request.form.get("name")
email = request.form.get("email")
user = User(name=name, email=email)
user.save()
return "User created successfully"
@app.route("/users", methods=["GET"])
def get_users():
users = User.objects()
return render_template("users.html", users=users)
위의 코드에서 /users
엔드포인트에서 POST 요청이 들어오면 사용자를 생성하고, GET 요청이 들어오면 사용자를 조회합니다. 사용자 생성은 User
클래스의 인스턴스를 생성하고 save()
메서드를 호출하여 MongoDB에 저장하는 방식으로 수행됩니다. 사용자 조회는 User.objects()
를 호출하여 모든 사용자를 가져오고, 결과를 템플릿에 전달하여 화면에 표시합니다.
결론
이 튜토리얼에서는 mongoengine
을 Flask와 통합하여 MongoDB와의 상호작용을 가능하게 하는 방법에 대해 알아보았습니다. 이를 통해 Flask 애플리케이션에서 데이터베이스 모델링과 작업을 수행할 수 있게 되었습니다. MongoDB를 사용하는 웹 애플리케이션을 개발할 때 mongoengine
과 Flask를 함께 사용하여 생산성과 효율성을 높일 수 있습니다.