boostcampaitech3 / final-project-level3-cv-17

[2022.05.16 ~ 2022.06.10] 🌤️미세먼지 없는 맑은 사진📷 - 부스트캠프 AI Tech 3기 최종 프로젝트
13 stars 3 forks source link

[MongoDB] 환경 설정, 코드 #19

Open baekkr95 opened 2 years ago

baekkr95 commented 2 years ago

Background

Content

install packages

app 폴더 안에 models 폴더 생성

image

참고자료 : https://github.com/amamov/teaching-async-python/tree/main/6-%EC%8B%A4%EC%A0%84-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%BD%9C%EB%A0%89%ED%84%B0%EC%8A%A4/6/app

baekkr95 commented 2 years ago

init.py 파일

from motor.motor_asyncio import AsyncIOMotorClient
from odmantic import AIOEngine
# from app.config import MONGO_DB_NAME, MONGO_URL

MONGO_DB_NAME = 'baekdb'
MONGO_URL = 'mongodb+srv://baek:651753@baekcluster.hny2ryx.mongodb.net/test'

class MongoDB:
    def __init__(self):
        self.client = None
        self.engine = None

    def connect(self):
        self.client = AsyncIOMotorClient(MONGO_URL)
        self.engine = AIOEngine(motor_client=self.client, database=MONGO_DB_NAME)
        print("DB와 성공적으로 연결이 되었습니다.")

    def close(self):
        self.client.close()

mongodb = MongoDB()

image.py

from odmantic import Model

class ImageModel(Model):
    inputimage: str # 사용자가 업로드한 사진
    cloudimage: str # 어떤 구름 사진을 선택했는지

    class Config:
        collection = "users"

main.py 파일에 import 목록

from fastapi import FastAPI, UploadFile, File, Response
import io
from io import BytesIO
from typing import List, Union, Optional, Dict, Any
from app.my_predict import get_prediction
from PIL import Image
import PIL

### db 관련 추가 import
from app.models import mongodb
from app.models.image import ImageModel

app = FastAPI()

db에 데이터 저장 및 가져오기 (테스팅)

omocomo commented 2 years ago

경륜님 main.py에서 @app.on_event("startup") 같은 db를 시작하고 끝내는 부분이 있었던 것 같은데 해당 부분 공유 가능할까요?

baekkr95 commented 2 years ago

경륜님 main.py에서 @app.on_event("startup") 같은 db를 시작하고 끝내는 부분이 있었던 것 같은데 해당 부분 공유 가능할까요?

main.py 맨 밑에 넣었습니다.

@app.on_event("startup")
def on_app_start():
    """before app starts"""
    mongodb.connect()

@app.on_event("shutdown")
def on_app_shutdown():
    """after app shutdown"""
    mongodb.close()