일단 현재는 RSS로 긁어온 데이터들을 출력해논 상태이다. (python의 feedparser이용)
이제 이 데이터들을 mongoDB에 저장해볼까 한다.
MongoDB설치하기
python에서 사용할 수 있는 pymongo라는 패키지가 있다.
이를 위해선 로컬환경에 mongoDB가 설치되어 있어야한다.
환경변수 설정하기
몽고디비 설치한 위치 경로 복사 (나의 경우는 이곳)
C:\Program Files\MongoDB\Server\4.4\bin
시스템 환경변수에 위의 경로 추가
MongoDB 실행하기
이제 local에 mongodb 서버가 시작되고, python에서는 여기에 연결하면 된다.
여기까지 mongoDB사용을 위한 환경설정상태였다. 이제는 python에서 몽고디비랑 연결하면 된다.
Python에서 연결하기
pip instll pymongo <--- 패키지 설치하기
from pymongo import MongoClient <-- 임포트하기
MongoDB 데이터베이스 확인하기
mysql에서 show databases하는 것처럼 mongodb에서도 현재 데이터베이스를 확인해볼 수 있다.
그리고 python에서도 확인해볼 수 있었다.
print(mongo.list_database_names())
결과 --> ['admin', 'config', 'local']
이제 본격적으로 aws 크롤링데이터들을 몽고디비에 넣을 차례이다.
mysql에서도 데이터베이스를 만들고 테이블을 만드는 것 처럼
mongoDB에서도 데이터베이스를 만들고, Collection을 만들면 된다!
나같은 경우는 testdb라는 데이터베이스를 만들고, aws라는 collection을 만들었다.
mongo_client = connect_DB(host,port)
database = mongo_client.get_database('mydb')
collection =database.get_collection('aws')
INSERT
그냥 아래처럼 insert문을 수행하면 된다. 이때 document는 dict형태이다.
for document in document_list:
collection.insert_one(document)
FIND
mysql에서 select처럼 find로 데이터를 가져와서 볼 수 있다.
result = collection.find()
for i in result:
print(i)
DELTE / (REMOVE) / DROP
이것도 mysql이랑 비슷해서 익히기 쉬웠따.
remove는 데이터들을 삭제할때 사용하고,
delete는 조건을 가진 데이터들을 삭제할때,drop은 컬렉션을 삭제하는 것이다.
근데 mongodb3.2(?)이후부터는 remove 대신 delete사용을 권장하는 것 같다.
그럼 테이블은 남겨두고 데이터들만 전체 삭제하려고 할땐?
collection.delete_many({})
조건에 해당하는 데이터를 삭제하려고 할땐? 이러면 해당하는 도큐먼트 하나만 삭제된다
collection.delete_one({"index":"null"})
반면에 조건에 해당하는 모든 데이터들을 한번에 여러개 삭제하고 싶을땐?
collection.delete_many({"index":"null"})
아마 rollback이 안되서 삭제하는데 조심?하도록 이런식으로 만들어둔게 아닐까
데이터 확인
중간에 어이없는 에러가 있었지만 해결하고 성공!
2021.04.16 - [mongodb] pymongo.errors.DuplicateKeyError
만약에 코드가 더 복잡해진다면 db를 다루는 부분은 따로 빼놔야 할 것 같다
그렇다면 여기를 참고하길 popcorn16.tistory.com/122
출처
mongodb설치하기 somjang.tistory.com/entry/WindowsMongodb%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0ver-420
mongodb 조작하기
'사이드 프로젝트 > 뉴스구독 웹서비스' 카테고리의 다른 글
AWS What's new 뉴스레터4 | 매주 화요일마다 메일이 전송됩니다~ (0) | 2021.04.20 |
---|---|
AWS What's new 뉴스레터3 | 크롤링데이터를 이메일로 전송하기 (0) | 2021.04.18 |
AWS What's new 뉴스레터2 | 이메일 전송 사전준비 및 이해 (0) | 2021.04.18 |
AWS What's new 뉴스레터1 | MongoDB를 써볼까?! (0) | 2021.04.16 |
티스토리 포스트 캘린더5 | 깃허브API를 응용해보자 (0) | 2021.04.15 |
티스토리포스트 캘린더4 | 생각해보니..굳이..? (0) | 2021.04.13 |