[python] ConfigParser 이용한 외부인자 관리

2022. 6. 7. 23:34Python

분석환경(DB, Cloud server 등)에 접속하기 위해 코드 상에서 접속정보를 직접 입력하는 경우가 있다.

 

 반복해서 사용되는 접속정보는 파일(.ini, .conf, .cfg 등)로 따로 저장하여 관리하는 것이 편리하다. 또한, github 연동을 통해 코드를 관리 하는 경우 해당 파일의 확장자를 .gitignore 파일에 추가하여 제외시키는 것이 보안상 안전하다.

 

 저장된 파일의 접속정보를 가지고 올때, 파이썬의 configparser가 필요하다!

 


 

1. 설치

!pip install configparser

 

2. Config 파일 생성

원하는 경로에 config.ini (예시 파일)을 생성해보자. 생성 방법은 직접 작성하는 것과 코드를 이용한 작성 방법이 있다.

# config.ini

[db_config]    # [section_name]
hostname = 127.0.0.1
port = 3306,
username = user,
password = pw1234,
database = mysql_db

 해당 파일은 [section]으로 구분되며, key=value 형태로 정보를 입력하면 된다. 여러 개의 section 및 정보를 입력하여 종합적으로 관리할 수 있다.

import configparser

parser = configparser.ConfigParser()

parser['db_config'] = {
	'hostname' = '127.0.0.1',
  	'port' = '3306',
  	'username' = 'user',
   	'password' = 'pw1234',
	'database' = 'mysql_db',
}

with open('./config.ini', 'w') as f:
	parser.write(f)

 

3. Config 정보 가져오기

import configparser

parser = configparser.ConfigParser()
# parser.read(file_name)
parser.read('./config.ini')

# parser.get(section_name, option_name)
host = parser.get('db_config', 'hostname')
port = parser.getint('db_config', 'port')
user = parser.get('db_config', 'username')
password = parser.get('db_config', 'password')
dbname = parser.get('db_config', 'database')
  • parser.read(file_name)를 이용해 간단하게 config 파일을 읽어온다.
  • parser.get(section_name, option_name)을 통해 option_value 값을 가져온다.
  • getint(), getfloat(), getboolean()를 이용하여 int / float / boolean 형태로 값을 반환할 수 있다.

 


config 파일을 직접 작성하는 경우 option_name, option_value 에 대해 따옴표가 필요하지 않다는 점과 parser.get()은 항상 string을 반환한다는 점만 주의하면 쉽게 사용할 수 있는 유용한 라이브러리인것 같다.

 

4. 참고

[1] https://onlytojay.medium.com/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%BD%98%ED%94%BC%EA%B7%B8-%ED%8C%8C%EC%84%9C-configparser-7cfb65b1a5ac