데이터베이스(db)

[Python] MongoDB 설치, 파이썬과 연동(robomongo/robo 3t)

끄적끄적아무거나 2021. 6. 16. 09:52
반응형

 

목차

     

     

    Mongodb, robomongo 윈도우에 설치

     

    Mongodb 설치 과정

     

    1. 괄호안의 사이트를 들어가서 아래 그림1과 같이 "On-premises", "platform: Windows", "Package:msi" 로 설정하고 msi 파일을 다운 받는다. (https://www.mongodb.com/try/download/community). 내 컴퓨터에 mongodb를 윈도우 버전으로 설치하는 파일을 받는 것이다.

    그림1

     

    2. Next 를 누른다. (그림2)

    그림2

     

    3. 체크박스를 체크하고 Next를 누른다. (그림3)

    그림3

     

    4. Complete 를 실행한다. 설치하고자 하는 폴더를 변경하고 싶으면 Custom을 실행한다(그림4)

    그림4

     

    5. 그림5와 같이 설정하고 Data와 Log를 다른 폴더로 관리한다. 여기서 폴더 경로에 한글은 넣지 않도록 하자.

    그림5

     

    6. "Install MongoDB Compass" 는 설치하지 않는다. 버그가 많은 프로그램이라 추후에 robomongo 라는 프로그램으로 관리해준다.

    그림6

     

    7. Install 후 설치를 완료 한다. 

     

     

     

     

    Robo 3T / robomongo 설치 과정

     

    Robo 3T는 Mongodb를 GUI(Graphic User Interface)로 쉽게 확인하고 처리할 수 있게 도와주는 소프트웨어이다. 설치는 아래와 같다.

     

    1. https://robomongo.org/ 에 접속 후 아래 그림7에 "Download Studio 3T Only"를 클릭한다. 

    그림7

     

     

    2. 다운로드를 위해 그림8과 같이 기입을 해야하는데 확인하는 절차는 없으므로 임의 정보를 넣어도 무방할 듯 하다.

    그림8

     

     

    3. 파일 압축을 풀고 실행하고 계속 Next를 누르자. 그림9와 같이 나오면 Finish를 실행한다.

    그림9

     

     

    4. 라이센스 사용에 "I agree" 해준다.

    그림10

     

     

    5. Password 는 default를 사용하겠다.

    그림11

     

     

     

    6. Finish로 완료 한다.

    그림12

     

     

     

    7. 그림13과 같이 설치를 위해 "Create a new connection" 을 선택한다. 

    그림13

     

    8. 그림14와 같이 설정을 기본으로 한다. 27017 포트는 mongodb 기본 포트이다.

    그림14

     

     

    9. Connect로 연결을 한다.

    그림15

     

     

     

    10. 그림16의 왼쪽과 같이 DB가 만들어 졌다.

     

     

     

     

     

    Python Mongodb 연동 하기(Pymongo)

     

    파이썬에서 Mongodb를 사용하기 위해 pymongo 라이브러리 설치가 필요하다. "pip install pymongo"로 먼저 설치하자

     

    코드>>

    import pymongo
    
    a_var = {
        "name": "James",
        "age": 25,
        "city": "Daejeon",
        "profile_pic" : [
            "pic_a.png",
            "pic_b.png"
        ]
    }
    
    b_var = {
        "name": "Brown",
        "age": 29,
        "profile_pic" : [
            "pic_c.png",
            "pic_d.png"
        ]
    }
    
    c_var = {
        "name": "Judy",
        "age": 22,
        "city": "Seoul",
        "profile_pic" : [
            "pic_e.png"
        ]
    }
    
    # mongodb와 연결 형성
    connect_to = pymongo.MongoClient("localhost", 27017)
    mdb = connect_to.test_db
    
    # collection 생성
    collection = mdb.members
    collection.insert_many([a_var,b_var,c_var])
    
    # document 찾기
    searched = collection.find()
    print(searched)
    print(searched[0])
    print("################")
    
    searched = collection.find({"$or": [{"name": "Judy"}, {"name": "Brown"}]})
    for _ in searched:
        print(_)
    print("################")
    
    searched = collection.find_one({"age": {"$gte": 28}})
    print(searched)
    print("################")
    
    # document update 하기
    collection.update_many({"name": "Judy"}, {"$set": {"name": "Charlie"}})
    searched = collection.find()
    for _ in searched:
        print(_)
    print("################")
    
    # document 삭제하기 
    collection.delete_one({"name": "Charlie"})
    searched = collection.find()
    for _ in searched:
        print(_)
    print("################")
    
    
    

     

     

     

    결과 - robo3t>>

     

     

    결과 - visual studio>>

    <pymongo.cursor.Cursor object at 0x00000217270916D0>
    {'_id': ObjectId('60c8323a10918f591d9a79ba'), 'name': 'James', 'age': 25, 'city': 'Daejeon', 'profile_pic': ['pic_a.png', 'pic_b.png']}
    ################
    {'_id': ObjectId('60c8323a10918f591d9a79bb'), 'name': 'Brown', 'age': 29, 'profile_pic': ['pic_c.png', 'pic_d.png']}
    {'_id': ObjectId('60c8323a10918f591d9a79bc'), 'name': 'Judy', 'age': 22, 'city': 'Seoul', 'profile_pic': ['pic_e.png']}
    ################
    {'_id': ObjectId('60c8323a10918f591d9a79bb'), 'name': 'Brown', 'age': 29, 'profile_pic': ['pic_c.png', 'pic_d.png']}
    ################
    {'_id': ObjectId('60c8323a10918f591d9a79ba'), 'name': 'James', 'age': 25, 'city': 'Daejeon', 'profile_pic': ['pic_a.png', 'pic_b.png']}
    {'_id': ObjectId('60c8323a10918f591d9a79bb'), 'name': 'Brown', 'age': 29, 'profile_pic': ['pic_c.png', 'pic_d.png']}
    {'_id': ObjectId('60c8323a10918f591d9a79bc'), 'name': 'Charlie', 'age': 22, 'city': 'Seoul', 'profile_pic': ['pic_e.png']}
    ################
    {'_id': ObjectId('60c8323a10918f591d9a79ba'), 'name': 'James', 'age': 25, 'city': 'Daejeon', 'profile_pic': ['pic_a.png', 'pic_b.png']}
    {'_id': ObjectId('60c8323a10918f591d9a79bb'), 'name': 'Brown', 'age': 29, 'profile_pic': ['pic_c.png', 'pic_d.png']}
    ################

     

     

    반응형