1. DB

"내가 원하는 데이터를 잘 찾기 위해서"

Index로 구분되어 관리되는 데이터!

 

<DB 형태에 따른 구분>

   SQL NoSQL (Not only SQL)
구분 특징 칸에 채워서 관리 - 정형화된 데이터 자유롭게 관리
장점 이상한 데이터가 적음
찾을 때 속도가 빠름
확장성이 좋음. 유연한 대처 가능
(>초기 스타트업, 서비스에서 사용하면 좋음)
단점 확장성이 낮음  

2. mongoDB에 저장하기

pymongo.errors.ServerSelectionTimeoutError:

에러 메시지 때문에 정말 한참 고생했다 ... ^_ㅠ...

결과적으로 사용하고 있는 인터넷 환경 때문이었고 추가 설정해서 해결함 ㅠ_ㅠ

다만 코드를 바꾸기 전에 클라우드에 폴더가 있으면 충돌이 일어날 수 있다고해서 폴더의 위치도 조정해주었다.

해결 방법 >> 스파르타코딩클럽 FAQ에서 찾은 듯

from pymongo import MongoClient
import certifi

ca = certifi.where()

client = MongoClient('url', tlsCAFile=ca)

db = client.dbsparta

 

3. mongoDB의 데이터 파이썬으로 조정하기

# 저장 - 예시
doc = {'name':'bobby','age':21}
db.users.insert_one(doc)

# 한 개 찾기 - 예시
user = db.users.find_one({'name':'bobby'})

# 여러개 찾기 - 예시 ( _id 값은 제외하고 출력)
all_users = list(db.users.find({},{'_id':False}))

# 바꾸기 - 예시
db.users.update_one({'name':'bobby'},{'$set':{'age':19}})

# 지우기 - 예시
db.users.delete_one({'name':'bobby'})

※ print 함수는 한꺼번에 표출은 안되고... for 문으로 하나씩 읽어오는 형태로 표출해줘야 한다.

#제목이 가버나움인 데이터를 찾으시오
movie = db.movies.find_one({'title':'가버나움'})

#가버나움의 star과 같은 데이터를 찾으시오
all_movies = list(db.movies.find({'star':movie['star']},{'_id':False}))

#그 데이터들을 하나씩 읽어서, title을 표출하시오
for m in all_movies:
    print(m['title'])
    
#이렇게 하면 안됨
print(all_movies['title'])

번외. 3주차의 거대한 문제 : 인터프리터 설정

mongoDB 저장이 계속 안되어 해결하는 과정(2)에서 실습하던 폴더의 경로를 한번 바꿨다.

그랬더니 인터프리터에 문제가 생겨서 .. ^^ 이전에 설치해놓은 라이브러리 함수가 안먹고...

재설치를 해보려해도 계속 오류....

오류 메세지 & 구글링을 통하여 추측한 결과 인터프리터 설정을 할 때 보통 경로 하나에 대해서만 적용되기 때문에..

경로를 바꾸니 해당 인터프리터가 작동을 안하고 그렇다고 재설치도 안되는? (아마 충돌하니까?) 그런 문제였음

 

이것저것 뒤져보다가 결국

이 버튼을 눌러봤었는데 엥? 그동안 설치했던 라이브러리가 쭉- 나오면서 해결이 됐다

모든 프로젝트에서 사용할 수 있도록 설정하는게 간단하지만 후에 문제가 될 수도 있을 ^_^ 방법일 듯 한데

나야 뭐 전문 개발자 아니니까 ㅎ 별 문제 없을거라 생각하고....

일단은 이렇게 고... 추후에 문제 생기면 다시 그때가서 해결하지 뭐...

+ Recent posts