멋사에서 기본적으로 배운 django와 mongoDB 연동하는 법을 알아보겠습니다.
참고로 django랑 궁합이 가장 좋은 DB는 PostgreSQL이라고 합니다.
django 프로젝트를 처음 시작하면 sqlite3라는 DB가 연결되어있습니다. 이거를 mongoDB로 바꿔주는 작업을 하면 됩니다.
일단 뭐 당연히 Mongodb 있어야겠죠?
그건 저번 세션에서 다루었기 때문에 넘어갑니다.
이번 세션의 주제는 "연결"이기 때문입니다.
방법은 PyMongo, MongoEngine, Djongo 등 여러 방법이 있는데, 저는 Djongo를 사용해 보겠습니다.
개발자가 긴 쿼리를 작성할 필요가 없기 때문에 그렇습니다.
우선 djongo를 설치해줍니다.
pip3 install djongo
그리고 settings.py에서 DATABASES 항목을 찾아서 수정해줍니다.
#settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
원래 이렇게 생겼는데 이거 지워주고 대체합니다.
DATABASES = {
'default': {
'ENGINE': 'djongo',
'ENFORCE_SCHEMA': True,
'LOGGING': {
'version': 1,
'loggers': {
'djongo': {
'level': 'DEBUG',
'propogate': False,
}
},
},
'NAME': '원하는 데이터베이스의 이름을 넣어주세요',
'CLIENT': {
'host': '127.0.0.1',
'port': 27017,
'username': '몽고DB 사용자 계정을 넣어주세요',
'password': "몽고DB 사용자 비밀번호 넣어주세요",
'authSource': 'admin',
'authMechanism': 'SCRAM-SHA-1'
}
}
}
여기까지하면 연결은 끝.
models.py 파일을 보면 원래 models를 django에서 import해왔을 겁니다.
from django import models
그걸 djongo로 바꿔주면 됩니다.
from djongo import models
이후에는 마이그레이션 해주면 끝입니다!!
python3 manage.py makemigrations
python3 manage.py migrate
다음으로는 node와 mongoDB를 연결하는 방법입니다.
일단 Cluster를 만듭니다.
user이름과 password를 만들고 본인 ip주소로 연결합니다.
connect your application을 눌러 주면
application code를 받게 됩니다. 이걸 복사해 둡니다.
그 다음에 node와 연결할 때는 mongoose를 사용합니다.
mongoose는 간단히 MongoDB를 연결할수 있는 Object Modeling Tool이라 보시면 됩니다.
npm install mongoose
package.json의 scripts를 수정합니다.
{
"name": "mongoose-exam",
"version": "1.0.0",
"scripts": {
"start": "node app"
},
"dependencies": {
"dotenv": "^8.2.0",
"express": "^4.17.1",
"mongoose": "^5.12.5"
}
}
일단 설치한 이후에, index.js파일에 다음과 같이 작성해줍니다.
const express = require('express'); // express 임포트
const app = express(); // app생성
const port = 5000;
app.get('/', function (req, res) {
res.send('hello world!!');
});
app.listen(port, () => console.log(`${port}포트입니다.`));
// 몽구스 연결
const mongoose = require('mongoose');
mongoose
.connect(
'여기에 아까 복사한 application code를 넣으면 됩니다.',
{
// useNewUrlPaser: true,
// useUnifiedTofology: true,
// useCreateIndex: true,
// useFindAndModify: false,
}
)
.then(() => console.log('MongoDB conected'))
.catch((err) => {
console.log(err);
});
끝!