본문 바로가기
정보보안/DB,SQL

Visual Studio Code에서 Flask 웹서버에 MongoDB 연동하고 쿼리 저장하기(windows)

by 우동이 2022. 10. 12.
300x250

MongoDB

문서 지향적 비 관계형 데이터베이스(NoSQL DataBase)
기존의 RDBMS에 비해 가볍고 기존 SQL 쿼리 문의 단점을 보완해 데이터, 인공지능 분야에서 활용됨
유연한 서버구조로 개인 웹서버에 활용하기에도 적절함
자원 비용 면에서 저렴하다는 것 또한 장점

 

이 글에서는 Visual Studio Code에서 구성된 Flask 웹서버에 MongoDB를 설치하고 연동해

쿼리문을 저장하는것까지 구현해보겠습니다.

 

작업환경 : VSCode,Python(Flask),MongoDB,Windows


1. VS Code Extension - MongoDB 설치

VS Code - Extensions - MongoDB for VS Code

VS Code의 확장(Extensions) 기능에 들어가 [MongoDB for VS Code] 확장팩을 설치해줍니다.

확장팩이 설치가 되면 좌측 아이콘에 MongoDB의 로고가 생성됩니다.

 

몇 년 전까지만 해도 MongoDB공식 확장팩은 없었던 것 같은데 생긴듯합니다.


 

2. Windows - MongoDB 설치

 

Try MongoDB Community Edition

Try MongoDB Community Edition on premise non-relational database including the Community Server and Community Kubernetes Operator for your next big project!

www.mongodb.com

 

다음은 OS용 MongoDB를 설치해줍니다.

제 현재 작업환경은 Windows 이므로 Window용 파일로 설치해줍니다.

Windows - MongoDB

설치가 완료된 MongoDB의 화면은 위 사진과 같습니다.

DB는 현재 PC에서 로컬 환경에서 작동될 예정이므로 기본으로 생성된 로컬 주소를 통해 연결할 수 있습니다.

추후 다른 접속을 해야 할 경우 [New connection]을 통해 DB 접속을 생성할 수 있습니다.

 


3. VS Code - MongoDB 연동

VS Code - MongoDB 화면

 

VS Code의 MongoDB로 들어옵니다.

이제 로컬로 생성된 MongoDB의 세션에 접속해주면 됩니다.

[Advanced Connection Settings]으로 접속할 수 있습니다.

 

VS Code - MongoDB - New Connection

접속 설정 화면에서 설정할 값은 [Hostname], [Port], [Authentication] 세 가지입니다.

각각 호스트네임, 포트, 인증 값입니다.

제 경우에는 로컬 접속이므로 MongoDB의 기본 지정 포트인 27017번 그대로

호스트네임 또한 localhost값 그대로

인증은 기본적으로 Username/Password를 설정하는 것이 좋지만

제 경우에는 사용자 인증을 별도로 해두지 않았습니다만 이는 권장사항이 아니므로 

웬만하면 설정하시길 바랍니다.

설정완료된 VSCode의 MongoDB

다음과 같이 기본 스키마 admin, config, local이 생성되고 [connected] 설정으로 변경되어

MongoDB의 Connection이 활성화되었습니다.

 


4. Flask Webserver - MongoDB 연동

다음은 Flask 웹서버에 MongoDB를 연동하는 법입니다.

플라스크 웹서버 예시코드

 

플라스크 웹서버 예시 코드에서 MongoDB연동을 위해 추가된 코드는 5번,6번,25번 코드입니다.

 

client=MongoClient("mongodb://localhost", 27017) #client로 MongoDB 접속
db=client.wooseongweb #client의 저장소 생성
db.board.insert_one(inf) #저장소에 변수값 저장(insert_one)

 

위 코드에서 db.board.insert_one() 쿼리문은 웹서버에서 받아온 값들을 DB 저장소에 전달하여 저장하는 쿼리문입니다.

MongoDB의 쿼리문은 기존 SQL질의응답을 사용하는 RDBMS와 쿼리문이 다르기 때문에 쿼리문에 대한 내용을 따로 찾아봐야 합니다.


쿼리문 참고

 

Query and Projection Operators — MongoDB Manual

Docs Home → MongoDB Manual For details on a specific operator, including syntax and examples, click on the link to the operator's reference page.For comparison of different BSON type values, see the specified BSON comparison order.NameDescriptionMatches

www.mongodb.com


더보기

웹서버 예시코드

 

from flask import Flask, render_template, request
from pymongo import MongoClient

app = Flask(__name__)
client=MongoClient("mongodb://localhost", 27017) #mongodb 연동
db=client.wooseongweb #저장소 생성

@app.route("/")
def index():
	return render_template('index.html')

@app.route("/write", methods=["GET", "POST"])
def write():
    if request.method=="POST":
        name = request.form.get("name")
        title = request.form.get("title")
        contents = request.form.get("contents")
        

        inf ={
            "name":name,
            "title":title,
            "contents":contents
        }
        db.boaard.insert_one(inf) #db 저장소에 값 저장
        
        print(name, title, contents)
        
        return ""
    else:
        return render_template("write.html")

if __name__ == "__main__":
    app.run(debug=True)

 

 

아무튼 DB 연동-저장 코드를 자신의 웹서버에서 사용해서 저장이 된 걸 확인하려면

VSCode의 MongoDB 탭에 들어가 보면 됩니다.

 

VSCode - MongoDB - 새로 생성된 저장소에서 확인

VSCode의 MongoDB탭에 보면 "wooseongweb"이라는 새로운 저장소가 생성되었음을 알 수 있고

저는 쿼리문을 통해 값까지 넘겨주었기 때문에 파일에 name, title, contents라는 이름의 변수로

값이 들어가 있는 걸 확인했습니다.

 

 


참고

 

Try MongoDB Community Edition

Try MongoDB Community Edition on premise non-relational database including the Community Server and Community Kubernetes Operator for your next big project!

www.mongodb.com

 

300x250

댓글