[파이썬] argparse와 데이터베이스 연동

개요

Python에서 데이터베이스를 사용하는 프로그램을 개발할 때, argparse 모듈을 사용하여 유연하게 명령줄 인자를 처리하고, 데이터베이스 연결 및 작업을 수행할 수 있습니다. 이 블로그 포스트에서는 argparse와 데이터베이스를 연동하여 간단한 데이터베이스 작업을 수행하는 방법에 대해 알아보겠습니다.

argparse란?

argparse는 Python의 명령줄 인자 파싱을 위한 표준 라이브러리입니다. 이를 사용하면 명령줄에서 입력된 인자들을 쉽게 처리할 수 있습니다. argparse는 사용자에게 몇 가지 필수 및 선택적 인자를 입력하도록 도움을 주며, 올바른 인자를 입력하거나 도움말을 출력할 수도 있습니다.

데이터베이스 연결 설정하기

먼저 데이터베이스에 연결하기 위해 필요한 인자들을 argparse를 사용하여 설정할 수 있습니다. 다음은 데이터베이스 종류, 호스트, 사용자 이름, 비밀번호 등을 인자로 받는 예제입니다.

import argparse

def parse_arguments():
    parser = argparse.ArgumentParser(description='Database Settings')
    parser.add_argument('--db-type', type=str, help='Database type')
    parser.add_argument('--host', type=str, help='Database host')
    parser.add_argument('--username', type=str, help='Database username')
    parser.add_argument('--password', type=str, help='Database password')
    
    args = parser.parse_args()
    return args

위 코드에서는 argparse.ArgumentParser()를 통해 parser 객체를 생성합니다. add_argument() 메서드를 사용하여 각 인자를 추가하고, typehelp 인자를 설정합니다. 이렇게 하면 사용자가 인자 없이 프로그램을 실행하거나, 잘못된 인자를 입력한 경우에 도움말이 출력됩니다.

데이터베이스 연결 및 작업 수행하기

argparse를 사용하여 데이터베이스에 연결한 후, 해당 연결을 사용하여 원하는 작업을 수행할 수 있습니다. 아래의 예제는 데이터베이스에 연결하고, 사용자의 정보를 입력받아 특정 테이블에 새로운 데이터를 삽입하는 코드입니다.

import argparse
import psycopg2

def connect_to_database(db_type, host, username, password):
    # 데이터베이스에 연결
    conn = psycopg2.connect(
        database=db_type,
        host=host,
        user=username,
        password=password
    )
    return conn

def insert_data_to_table(conn, table_name, data):
    # 데이터 삽입
    cursor = conn.cursor()
    # INSERT 문 실행
    cursor.execute(f"INSERT INTO {table_name} VALUES (%s, %s, %s)", data)
    # 변경사항 커밋
    conn.commit()
    cursor.close()

def main():
    # 명령줄 인자 파싱
    args = parse_arguments()
    
    # 데이터베이스 연결
    conn = connect_to_database(args.db_type, args.host, args.username, args.password)
    
    # 데이터 입력
    data = ('John', 'Doe', 'example@example.com')
    insert_data_to_table(conn, 'users', data)
    
    # 연결 종료
    conn.close()

if __name__ == '__main__':
    main()

위 코드에서는 connect_to_database() 함수로 데이터베이스에 연결하고, insert_data_to_table() 함수로 데이터를 특정 테이블에 삽입합니다. 이 코드는 PostgreSQL을 사용한다고 가정하고 작성되었으며, 필요한 경우 데이터베이스 종류에 따라 코드를 수정해야 합니다.

마무리

argparse를 사용하여 명령줄 인자를 처리하고, 데이터베이스 연결 및 작업을 수행하는 방법에 대해 알아보았습니다. 이를 통해 Python에서 데이터베이스와 상호작용하는 프로그램을 더욱 효율적으로 개발할 수 있습니다. argparse의 다양한 기능과 데이터베이스 모듈들의 API를 적절히 활용하면 보다 복잡한 데이터베이스 작업도 쉽게 처리할 수 있습니다.