본문 바로가기

머신러닝

[파이썬] 파이썬에서 Mongo DB 활용하기

728x90

1. Mongo DB 데이터 베이스 생성

 
전 포스트에서 Mongo DB와 연결했던 코드와 크게 다르지 않습니다.
 

from pymongo import MongoClient

client = MongoClient("mongodb://localhost:27017")
db_client = client['Test_db']
print(client.list_database_names())

 
그러나 결과를 확인해 보면 Test_db라는 DB가 생성되지 않았습니다.
Mongo DB에서는 내용이 있어야 DB가 생성되기 때문입니다.
 
따라서 collection과 record를 만들어 줍니다.
 

col_client = db_client['Test_col']

record_1 = {
    'student_id' : '213835',
    'name' : 'Kim',
    'grade' : 'A'
}

record_2 = {
    'student_id' : '312683',
    'name' : 'Ryu',
    'grade' : 'B'
}

col_client.insert_many([record_1,record_2])

 
 
임의의 collection과 record를 생성하고 생성할 DB에 record를 삽입해줍니다.
 
위 코드를 주석 처리한 후 다음 명령어로 DB 생성을 확인합니다.
 

print(client.list_database_names())

 
DB가 정상적으로 생성이 되었습니다.
 
DB에서 collection이 생성되었는지 조회는 다음 명령어로 확인할 수 있습니다.
 

print(db_client.list_collection_names())

 
정상적으로 생성되었습니다.
 

1-1. Record 조회

 
record를 조회해 보겠습니다.
 

all_record = col_client.find()
for i in all_record:
    print(i)

 
정상적으로 생성된것을 확인할 수 있습니다.
 

1-2. Record 수정

 
record를 업데이트 하려면 다음과 같은 명령어를 입력합니다.
 

col_client.update_one({'name':'Ryu'},{'$set':{'name':'Baek'}})

 
만약  $set을 붙이지 않으면 이름을 제외한 다른 데이터는 삭제 되니 항상 $set을 붙여주도록 합시다.
 
만약 제일 위에 있는 데이터가 아니라 모든 이름이 Ryu인 사람을 Baek으로 바꾸고 싶다면
updateMany를 사용하시면 됩니다.
 

1-3. Record 삭제

 
record를 삭제하고 싶다면 다음과 같은 명령어를 입력합니다.
 

col_client.delete_one({'name':'Baek'})

 
정상적으로 삭제 되었습니다.
 
만약 name이 Baek인 모든 데이터를 삭제하고 싶다면 delete 명령어를 사용하시면 됩니다.
 

1-4. DataFrame으로 Record 확인하기

 
Record를 DataFrame으로 변환시켜 확인합니다.
 

import pandas as pd

all_record = col_client.find()

record_df = pd.DataFrame(all_record)

print(record_df)

 
조금 더 편하게 확인할 수 있습니다.
 

728x90

 

2. Mongo DB에 Json 파일 업로드

 

2-1. Collection을 Json으로 변환

 
생성한 Record를 Json 파일로 변환하겠습니다.
 

from bson.json_util import dumps

json_record=dumps(all_record)

print(json_record)

 
json 파일을 저장합니다.
 

import json

with open('save_json.json','w') as f:
    f.write(json_record)

 

2-2. 저장한 Json 파일을 데이터 베이스에 삽입하기

 
새로운 컬렉션을 생성하고 json 파일을 불러옵니다.
 

col_client_2= db_client['Test_col_2']
with open('save_json.json', 'r') as f:
    read_json = json.load(f)

 
불러온 json 파일의 필요한 값만 추출합니다.
 

read_json= read_json[0] # dict만 가져옴

read_json.pop('_id') # id 제외

 
이제 컬렉션에 데이터를 삽입하고 결과를 확인합니다.
 

col_client_2.insert_many([read_json])

all_record_2 = col_client_2.find()

for i in all_record_2:
    print(i)

 
정상적으로 삽입 된 것을 확인할 수 있습니다.

728x90