Flask 와 MongoDB 연결(BP)

박연주·2022년 5월 8일
0

Flask 와 MongoDB 연결

Add the module
Add the Database module
In order to connect to our database and run operations on it, we would want to have a generic module and class that we can use anywhere in our application code.

# database.py
import pymongo

class DB(object):
    URI = "mongodb://localhost:27017"

    @staticmethod
    def init():
        client = pymongo.MongoClient(DB.URI)
        DB.DATABASE = client['event_cafe_cloud']

    @staticmethod
    def insert(collection, data):
        DB.DATABASE[collection].insert_one(data)

    @staticmethod
    def delete(collection, data):
        return DB.DATABASE[collection].delete_one(data)

    @staticmethod
    def find_one(collection, query):
        return DB.DATABASE[collection].find_one(query)

    @staticmethod
    def update_one(collection, query, update):
        return DB.DATABASE[collection].update_one(query, update)

    @staticmethod
    def list(collection, query1, query2):
        return list(DB.DATABASE[collection].find(query1, query2))

    @staticmethod
    def count_documents(collection, query1, query2):
        return DB.DATABASE[collection].find(query1, query2)

    @staticmethod
    def count(collection):
        return DB.DATABASE[collection].estimated_document_count({})

    @staticmethod
    def idx_plus(collection):
        return DB.DATABASE[collection].find_one(sort=[("idx", -1)])['idx'] + 1



# main_controller.py
import jwt
from flask import request, render_template, Blueprint, jsonify, url_for, redirect

from database import DB
from controller.auth_controller import SECRET_KEY
from ectoekn import ECTOKEN

bp = Blueprint('main', __name__)


@bp.route('/')
def home():
    user = ECTOKEN.get_token(object)
    if user is not None:
        cafes = DB.list('cafes', {}, {'_id': False})
        return render_template('index.html', user=user, cafes=cafes)
    else:
        return render_template('index.html', msg="로그인 정보가 없습니다")



@bp.route('/api/main', methods=['GET'])
def show_cafes():
    msg = request.args.get('msg')
    cafes = DB.list('cafes', {}, {'_id': False})    # 사용
    return jsonify({'result': 'success', 'cafes': cafes})



Blue Print 사용

블루프린트로 라우팅

Add the module
블루프린트로 라우팅

profile
하루에 한 개념씩

0개의 댓글