목차
Pymongo 데이터베이스(Database), 콜렉션(Collection) 생성, 데이터 입력
이번 포스트에서는 Pymongo를 사용해서 MongoDB의 Database, Collection을 생성, 삭제, 변경, 정렬, 추가 하는 예제를 구현할 것입니다. 기본 설치가 되어 있지 않다면 하단에 포스트를 참조 하시고 설치 후 아래 과정을 진행 하시면 됩니다.
https://scribblinganything.tistory.com/195
Pymongo를 사용해서 DB를 만들고 그 아래 Collection을 만듭니다. Collection은 MySQL에 테이블(Table)과 동일한 개념으로 생각하시면 됩니다. DB 창고 안에 데이터를 넣을 테이블을 만드는 것입니다.
그리고 만들어진 Collection에 데이터를 입력 합니다.
예제 코드>>
import pymongo
import random
db_data0 = {
"random_number1": str(random.randint(0,1000)),
"random_number2": str(random.randint(0,1000))
}
db_data1 = {
"random_number1": str(random.randint(0,1000)),
"random_number2": str(random.randint(0,1000))
}
connect_to = pymongo.MongoClient("localhost", 27017)
mdb = connect_to.new_db
collection = mdb.members
collection.insert_many([db_data0,db_data1])
for _ in range(100):
db_data = {
"random_number1": str(random.randint(0,1000)),
"random_number2": str(random.randint(0,1000))
}
collection.insert_one(db_data)
14번 라인 : pymongo에 연결 합니다.
15번 라인 : mdb는 임의의 명입니다. new_db라는 새로운 DB를 생성 합니다.
16번 라인 : members라는 명으로 collection을 생성 합니다.
18번 라인 : insert_many 함수를 사용해서 여러 값을 한번에 넣습니다.
25번 라인 : insert_one 함수를 사용해서 하나씩 값을 입력 합니다.
결과>>
새로운 DB가 만들어 졌고 Collection 아래에 members에 데이터가 들어 갔습니다.
Pymongo DB 검색하기(정규표현식)
Pymongo DB 검색은 find라는 함수를 사용해서 검색할 수 있습니다. find에 query를 넣어서 검색할 수 도 있습니다.
코드>>
import pymongo
connect_to = pymongo.MongoClient("localhost", 27017)
mdb = connect_to.new_db
collection = mdb.members
searched = collection.find()
print(searched[0])
query = {"$or": [{"random_number1": '181'}, {"random_number2": '278'}]}
searched = collection.find(query)
for x in searched:
print(x)
7번 라인 : find 함수로 모든 members 데이터를 가져 옵니다. 한개 값만 가져오고 싶을 때는 find_one 함수를 사용하면 됩니다.
10번 라인 : or 쿼리 문을 사용하여 해당 조건에 맞는 값을 모두 불러 옵니다.
결과>>
{'_id': ObjectId('61a7326cbcd1c8ff794714ca'), 'random_number1': '481', 'random_number2': '82'}
{'_id': ObjectId('61a7326cbcd1c8ff794714d8'), 'random_number1': '900', 'random_number2': '278'}
{'_id': ObjectId('61a7326cbcd1c8ff794714db'), 'random_number1': '181', 'random_number2': '596'}
members의 첫번째 결과와 Query에 의해 걸러진 결과입니다.
정규표현식(Regex)을 Query(쿼리)에 보내서 찾을 수있습니다.
코드>>
import pymongo
connect_to = pymongo.MongoClient("localhost", 27017)
mdb = connect_to.new_db
collection = mdb.members
query = { "random_number1": { "$regex": '^90' } }
searched = collection.find(query)
for x in searched:
print(x)
7번 라인: 90으로 시작하는 random_number1의 데이터를 정규표현식으로 걸러서 가져옵니다.
결과>>
{'_id': ObjectId('61a7326cbcd1c8ff794714d8'), 'random_number1': '900', 'random_number2': '278'}
{'_id': ObjectId('61a7326cbcd1c8ff79471511'), 'random_number1': '905', 'random_number2': '646'}
{'_id': ObjectId('61a7326cbcd1c8ff79471520'), 'random_number1': '909', 'random_number2': '485'}
Pymongo DB 값 변경 하기 / 업데이트 하기
업데이트는 update 함수를 사용해서 합니다. 아래는 한번에 여러개 바꿀 수 있는 update_many 입니다.
코드>>
import pymongo
connect_to = pymongo.MongoClient("localhost", 27017)
mdb = connect_to.new_db
collection = mdb.members
query = { "random_number1": { "$regex": '^90' } }
collection.update_many(query,{"$set": {'random_number1': '777'}})
query = { "random_number1": '777' }
searched = collection.find(query)
for x in searched:
print(x)
7~8번 라인 : 앞서 찾은 90으로 시작하는값을 777로 변경합니다.
결과>>
{'_id': ObjectId('61a7326cbcd1c8ff794714d8'), 'random_number1': '777', 'random_number2': '278'}
{'_id': ObjectId('61a7326cbcd1c8ff79471511'), 'random_number1': '777', 'random_number2': '646'}
{'_id': ObjectId('61a7326cbcd1c8ff79471520'), 'random_number1': '777', 'random_number2': '485'}
앞서 90으로 시작한 결과들이 위처럼 변경 되었습니다.
Pymongo DB 값 삭제 하기
앞서 업데이트한 777값 중 첫번째 값만 삭제하겠습니다. 삭제 함수는 delete_one과 delete_many가 있습니다.
코드>>
import pymongo
connect_to = pymongo.MongoClient("localhost", 27017)
mdb = connect_to.new_db
collection = mdb.members
collection.delete_one({"random_number1": '777'})
query = { "random_number1": '777' }
searched = collection.find(query)
for x in searched:
print(x)
7번 라인 : delete_one을 사용해서 첫번째로 나오는 "777"값을 삭제하였습니다.
결과>>
{'_id': ObjectId('61a7326cbcd1c8ff79471511'), 'random_number1': '777', 'random_number2': '646'}
{'_id': ObjectId('61a7326cbcd1c8ff79471520'), 'random_number1': '777', 'random_number2': '485'}
3개 중에 2개만 남았습니다.
'데이터베이스(db)' 카테고리의 다른 글
[Pymongo] 엑셀파일 mongodb에 업로드하기(Excel to mongoDB) (0) | 2022.03.04 |
---|---|
파이썬에서 DB에 비밀번호 암호화(hash)해서 저장하기(flask,mongodb) (0) | 2021.06.19 |
flask와 mongodb를 사용해서 회원가입페이지 간단히 만들어보기(signup) (11) | 2021.06.18 |
[Python] MongoDB 설치, 파이썬과 연동(robomongo/robo 3t) (0) | 2021.06.16 |
[Python] MySql 생성, 삭제, 검색 (pymysql, create, delete, search 예제 포함) (0) | 2021.06.10 |