Computer >> 컴퓨터 >  >> 프로그래밍 >> 데이터베이스

데이터베이스 엔진별 필수 Python 모듈 총정리: PyMongo로 MongoDB 다루기

일반적으로 개발자들은 데이터 내보내기·가져오기, 데이터베이스(DB) 통계 수집, 테이블스페이스 모니터링, 차단 세션(blocking session) 점검, DB 잠금(lock) 확인 같은 반복적인 데이터베이스 작업을 자동화하기 위해 셸 스크립트를 활용해 왔습니다.

개요

Python®은 지난 7년 이상 가장 인기 있는 프로그래밍 언어 중 하나로 자리 잡았습니다. 이 글에서는 다양한 데이터베이스 엔진에서 사용되는 Python DB 모듈을 살펴보고, PyMongo 모듈을 활용해 MongoDB® 컬렉션에 데이터를 조회하고 삽입하는 방법까지 실제 예제와 함께 단계별로 안내합니다.

주요 Python DB 모듈 소개

Python은 객체지향 기반의 고급 프로그래밍 언어로, 웹 개발, 데이터 과학, Linux® 시스템 관리 등 폭넓은 분야에서 활용할 수 있는 방대한 모듈 생태계를 갖추고 있습니다. 아래 표는 대표적인 데이터베이스 엔진과 이에 대응하는 Python 모듈을 정리한 것입니다.

데이터베이스 엔진 Python 모듈
Oracle cx_oracle
PostgreSQL psycopg2
MongoDB pymongo
MySQL mysql.connector, pymysql
Cassandra cassandra-driver

CX_ORACLE

cx_oracle은 Oracle 데이터베이스에 접근할 수 있도록 지원하는 Python 모듈로, Python 데이터베이스 API 사양을 준수합니다. Oracle Database 11.2, 12c, 18c, 19c, 21c 버전과 호환됩니다.

PSYCOPG2

psycopg2는 PostgreSQL 데이터베이스에 접근하기 위한 Python 모듈로, 역시 Python 데이터베이스 API 사양을 따릅니다. 특히 여러 커서(cursor)를 열어 동시에 INSERT와 UPDATE 작업을 수행할 수 있는 멀티스레드 애플리케이션 지원이 핵심 장점입니다.

PYMONGO

pymongo는 MongoDB에 접속하여 컬렉션(collection), 문서(document) 등 데이터베이스 객체에 대해 쿼리를 수행할 수 있게 해주는 모듈입니다.

MYSQL.CONNECTOR

mysql.connector는 MySQL 데이터베이스에 접근하고 쿼리를 실행할 수 있도록 지원하는 공식 Python 모듈로, Python 데이터베이스 API 사양을 준수합니다.

CASSANDRA-DRIVER

cassandra-driver는 Apache® Cassandra® 데이터베이스 전용 Python 드라이버로, Cassandra 쿼리 언어(CQL)와 호환됩니다. 이 모듈을 사용하면 Cassandra 데이터베이스에 연결하고 쿼리를 손쉽게 수행할 수 있습니다.

PyMongo 실습 데모

Python 프로그래밍을 활용하면 MongoDB에서 CRUD(Create, Read, Update, Delete) 작업을 손쉽게 처리할 수 있습니다. 다음 단계에서는 pip 설치, pymongo 모듈 구성, 그리고 PyMongo를 사용한 Python 스크립트 작성 및 실행 과정을 안내합니다.

  1. 다음 명령어를 실행하여 Linux 서버에 설치된 Python 버전을 확인합니다:

    # python --version
    Python 2.7.18
    
  2. 아래 명령어로 pip와 PyMongo를 설치합니다:

    # yum install python-pip
    # pip install pymongo
    
  3. 선호하는 텍스트 편집기를 열어 MongoDB 컬렉션에 대해 CRUD 작업을 수행하는 다음 Python 스크립트(mongo-crud.py)를 작성합니다:

    #!/usr/bin/python
    
    from pymongo import MongoClient
    client = MongoClient(host = 'localhost:27017', username="dba", password="user123")
    
    mongodbinfo = client.server_info()
    print ("Printing MongoDB Server Information")
    print (mongodbinfo)
    
    print ("##################################################")
    
    print ("Mongo DB version")
    print ("db version:", mongodbinfo["version"])
    
    print ("##################################################")
    
    db = client.empdb
    empdetails = db.employeedetails
    print ("Existing collection information")
    printcollection = empdetails.find()
    for i in printcollection:
        print (i)
    print ("##################################################")
    
    print ("Adding one document to the collection")
    details = {"name": "Andy", "designation": "Clerk"}
    newentry = empdetails.insert_one(details)
    print (" newentry:", newentry)
    
    printcollection1 = empdetails.find()
    for i in printcollection1:
        print (i)
    print ("##################################################")
    
    print ("Performing a search on the collection")
    
    search = empdetails.find_one({ 'name' : 'Jack'})
    print (search)
    print ("##################################################")
    
    print ("Adding multiple documents to the collection")
    entry1 = {"name": "Cathy", "designation": "Data Operator"}
    entry2 = {"name": "Susan", "designation": "Operations Manager"}
    newentries = empdetails.insert_many([entry1, entry2])
    
    printcollection2 = empdetails.find()
    for i in printcollection2:
        print (i)
    
  4. 다음 명령어로 Python 스크립트를 실행합니다. 실행 결과는 아래 이미지와 유사하게 출력됩니다:

    # python mongo-crud.py
    

데이터베이스 엔진별 필수 Python 모듈 총정리: PyMongo로 MongoDB 다루기

결론

Python은 2020년에도 가장 주목받는 프로그래밍 언어 중 하나였으며, 웹 개발부터 데이터 분석까지 폭넓은 영역에서 활용되고 있습니다. 데이터베이스 엔지니어에게 Python은 기존 셸 스크립트를 대체할 수 있는 강력하고 유연한 데이터베이스 작업 자동화 수단이 됩니다.

저희 데이터베이스 서비스에 대해 더 자세히 알아보세요.

피드백 탭을 통해 의견을 남기시거나 질문을 보내주세요. 언제든지 대화를 시작할 수 있습니다.