본문 바로가기

DB

파이썬 flask에서 MongoDB 사용하기

DB 생성 및 연결하기

1. MongoDB Cloud 접속

https://cloud.mongodb.com/v2/640f30c4c52b8f51ee88a33d#/clusters

 

Cloud: MongoDB Cloud

 

account.mongodb.com

2. Database 탭에서 DB생성 후, Connect 버튼 -> Connect your application 클릭

3. sparta DB에 연결하는 url을 복사하고 url중 password 부분에 비밀번호 입력

4. 파이썬에서 sparta db에 접속하기

from pymongo import MongoClient
client = MongoClient('mongodb+srv://sparta:test@sparta.mjqohhf.mongodb.net/?retryWrites=true&w=majority')
db = client.dbsparta

 

 

파이썬 flask에서는 아래 예시 연산을 수행하기위해 제공하는 메소드를 사용하여 sql 쿼리문을 작성하지 않아도 됨 

 

update_one(query, newvalues)

 

 

 

CRUD 하기

DB 현황 (예시)

dbsparta db에 저장되어 있는 데이터

 

 

DB에 저장된 첫번째 데이터

from pymongo import MongoClient
client = MongoClient('mongodb+srv://sparta:test@sparta.mjqohhf.mongodb.net/?retryWrites=true&w=majority')
db = client.dbsparta

all_buckets = list(db.bucket.find({},{'_id':False}))
print(all_buckets)
#=>[{'_id': ObjectId('6426562eea6b18b1021f9d9f'), 'num': 1, 'bucket': '5성급 호텔에서 한달 살기!', 'done': 1}, {'_id': ObjectId('64265644ea6b18b1021f9da0'), 'num': 2, 'bucket': '100억 벌기', 'done': 1}, {'_id': ObjectId('64265653ea6b18b1021f9da1'), 'num': 3, 'bucket': '1년동안 세계 여행 ', 'done': 0}, {'_id': ObjectId('64265664ea6b18b1021f9da2'), 'num': 4, 
#'bucket': '연봉 10억 받기', 'done': 0}, {'_id': ObjectId('642660cee8ab1dad25b7d455'), 'num': 5, 'bucket': '코드 마스터 되기', 'done': 0}, {'_id': ObjectId('6426629ee8ab1dad25b7d456'), 'num': 6, 'bucket': '행복한 가정 만들기', 'done': 0}]

 

1. Create

doc = {
        'num':999,  
        'bucket' :"많이 웃기",
        'done' : 0 
        }
#doc 데이터 삽입 
db.bucket.insert_one(doc)

 

2. Read

# _id dict 내에 있는 전체 데이터 조회 
all_buckets = list(db.bucket.find({}, {'_id':False}))
print(all_buckets)
#=> [{'num': 1, 'bucket': '5성급 호텔에서 한달 살기!', 'done': 1}, {'num': 2, 'bucket': '100억 벌기', 'done': 1}, {'num': 3, 'bucket': '1년동안 세계 여행 ', 'done': 0}, {'num': 4, 'bucket': '연봉 10억 받기', 'done': 0}, {'num': 5, 'bucket': '코드 마스터 되기', 'done': 0}, {'num': 6, 'bucket': '행복한 가정 만들기', 'done': 0}]

# _id dict 내에 있는 num 필드 첫번째 데이터 조회 -> _id dict 데이터 내 num, bucket, done 필드가 저장되어있어 num ==1인 데이터외에 나머지도 조회됨
all_buckets = list(db.bucket.find({'num':1}, {'_id':False}))
print(all_buckets)
#=> [{'num': 1, 'bucket': '5성급 호텔에서 한달 살기!', 'done': 1}]


# db에 저장된 첫번째 데이터만 조회
all_buckets = db.bucket.find_one({})
print(all_buckets)
#=> {'_id': ObjectId('6426562eea6b18b1021f9d9f'), 'num': 1, 'bucket': '5성급 호텔에서 한달 살기!', 'done': 1}

all_buckets = db.bucket.find_one({}, {'_id':False})
print(all_buckets)
#=> {'num': 1, 'bucket': '5성급 호텔에서 한달 살기!', 'done': 1}
print(all_buckets['num'])
#=> 1


# find_one에 조건 추가
all_buckets = db.bucket.find_one({'num':3}, {'_id':False})
print(all_buckets)
# => {'num': 3, 'bucket': '1년동안 세계 여행 ', 'done': 0}

 

3. Update

#num 999인 데이터의 bucket 값을 "깔깔대기" 로 수정
db.bucket.update_one({'num':999}, {'$set' : {'bucket':"큰소리로 웃기", "done" : 1004}})


#수정 전 : {'num': 999, 'bucket': '많이웃기', 'done': 0}
#수정 후 : {'num': 999, 'bucket': '큰소리로 웃기', 'done': 1004}


# 업데이트 예정
db.bucket.update_many()

 

 

 

 

4. Delete

#num 999 데이터 삭제하기
db.bucket.delete_one({'num':999})

 

https://prod.velog.io/@jhoon8903/day-26-Flask-mongodb-data-%EC%82%AD%EC%A0%9C

 

'DB' 카테고리의 다른 글

14. DB transaction과 ACID  (0) 2023.06.20
3. SQL (MySQL 기준)  (0) 2023.06.18
2. 컴퓨터와 DB  (1) 2023.06.18
RDB 정규화와 예시  (0) 2023.06.15
DataBase, 종류, MySQL Vs NoSQL  (0) 2023.03.21