[MongoDB] Python으로 CRUD 구현 - Pymongo
파이썬으로 MongoDB에 연결해서 CRUD를 구현해볼 것이다. 시작 전 Pymongo 라이브러리가 설치 되어있어야한다.
1. Pymongo 임포트 및 연결 테스트
import pymongo
connection = pymongo.MongoClient() # 주소를 쓰지 않을 경우 무조건 27017로 접속. aws를 쓸 경우 ('mongodb://ip주소')
db_test = connection.test # db = connection["test"] 데이터베이스 없으면 만들어 짐
print(db_test) # Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'test')
pymongo를 import하고 MongoClient() 메소드를 사용하여 객체를 생성한다. 생성된 객체로 데이터베이스 이름을 명시 해주면 데이터베이스 객체가 생성된다. 위의 과정으로 데이터베이스 생성 또는 기존에 있다면 선택이 가능하다.
print(db_test)로 'Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'test')' 와 같이 출력되면 연결이 된 것이다.
print(dir(db_test))
db_test는 객체이므로 dir()을 이용해 내장된 변수와 메소드를 확인할 수 있다.
2. CRUD (with GUI)
먼저 사용될 Collection을 만들어 보자. (해당 이름의 Collection이 존재한다면 선택)
db_test_users = db_test.users
print(db_test_users)
print(dir(db_test_users))
만들어진객체를 print()를 이용해 구성을 살필 수 있다. 명령어는 snake_case 형식으로 되어있다. (기존 MongoDB Shell에서 쿼리를 할 때는 camelCase이므로 헷갈리지 말자.)
모든 메소드엔 비교 문법 역시 적용 가능핟.
1) Create
데이터 입력 형식을 JSON형식으로 만들어줘야한다. 그리고 필드(속성)값은 "" 또는 ''으로 감싸주어 변수로 인식이 되지 않아야 입력이 가능하다.
- insert_one(): 하나의 데이터만 입력할 때
user1 = {"name": "sangrae", "age": 29, "is_male": True, "tags": ["Back-End", "Front-End", "MonogoDB"]}
db_test_users.insert_one(user1)
_id에 고유 Primary Key가 지정이 되고 각 필드에 벨류대로 타입이 결정된다.
- insert_many(): 여러개의 데이터를 입력할 때
user2 = {"name": "minyoung", "age": 24, "is_male": False, "occupation": "Producer", "skills": ["Video-making"]}
user3 = {"name": "leo", "age": 27, "is_male": True, "company": {"name": "Julia", "addr": "LosAngeles, California USA"}}
user4 = {"name": "mia", "age": 23, "is_male": False, "occupation": "Student"}
db_test_users.insert_many([user2, user3, user4])
정해진 필드, 정해진 타입 등의 제한이 없는 MongoDB의 특성을 잘 볼 수 있다.
2) Read
- find_one(): 조건에 해당되는 가장 빨리 검색되는 하나의 데이터만 찾을 때 (조건이 없을 땐 가장 첫번째 데이터)
sangrae = db_test_users.find_one({"name": "sangrae"})
print(sangrae)
- find(): 조건에 해당되는 모든 데이터를 조회 (조건이 없을 땐 모든 데이터)
users = db_test_users.find({"age": {"$gte": 24}})
for user in users:
print(user)
users[0]와 같이 인덱스로 특정 값만 조회해 보거나 반복문을 이용하여 모두 조회해 볼 수 있다.
3) Update
$set, $inc 등의 키워드를 사용해서 수정할 수 있다.
- update_one(): 하나만 수정할 때. 찾기위한 조건과 바꿀 값을 넣어주면 된다.
db_test_users.update_one({"name":"sangrae", "age": 29}, {"$set": {"age": 30}})
- update_many(): 여러개의 데이터를 한번에 수정.
db_test_users.update_many({"age": {"$lt": 28}}, {"$set": {"occupation": None}})
없던 필드는 추가가 된다.
4) Delete
- delete_one(): 하나만 삭제.
db_test_users.delete_one({"name": "sangrae"})
- delete_many(): 여러개 삭제.
db_test_users.delete_many({"occupation": None})
Author And Source
이 문제에 관하여([MongoDB] Python으로 CRUD 구현 - Pymongo), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@tkdfo93/MongoDB-Python으로-CRUD-구현-Pymongo저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)