728x90
[Python] 민감 정보 분리하기
파이썬에서 데이터를 가져오거나 활용하려고 할 때, DB를 사용하는 경우가 많음
연동할 때 코드에 DB Host와 사용자의 Passwd를 적는 것이 불안하기도 했고,
매번 엔드포인트를 연결하려고 하니 귀찮은 점도 많았음
다양한 방법이 많은데, 여기서는 DB의 연결 정보를 Json 파일로 분리하는 방법을 사용
Json 파일 생성
db.json이란 파일명으로 json 파일을 생성
{
"host": "my db host",
"user": "my user",
"passwd":"my password",
"port" : "my db port"
}
✔ 사용할 데이터베이스 정보를 넣어줘도 됨
모듈 Import
config 파일이 있는 위치를 지정해주는 os 와
json 라이브러리를 import
import os
import json
경로 지정
config 파일이 위치한 경로를 지정해주면 됨,
나는 ubuntu 환경을 사용하고 있기 때문에 ubuntu 홈에 폴더를 생성해서 경로를 지정해줌
그리고 생성한 폴더에, 위에서 생성한 db.json 파일을 넣어주고 아래와 같이 코드 작성
- CONF_DIR : Config 파일이 위치 할 폴더 경로
- config_file : 사용 할 config 파일명
CONF_DIR = "/home/ubuntu/config"
config_file = os.path.join(CONF_DIR, 'db.json')
Json 파일에서 Config 정보 불러오기
with open을 사용해서 json 파일을 읽어온 후 db_conf란 변수에 저장
with open(config_file) as f:
db_conf = json.loads(f.read())
json의 요소를 가져오는 함수 생성
🔎 json 파일에 설정 값이 있으면 return하고 없으면 err 메시지 출력
def get_conf(set, conf=db_conf):
try:
return conf[set]
except KeyError:
err_msg = f"set the {set} enviroment variable"
raise print(err_msg)
설정값 가져오기
각각 config 값들을 변수에 저장
db_host = get_conf("host")
db_user = get_conf("user")
db_passwd = get_conf("passwd")
DB연결
저장한 변수들을 connect 값에 넣어줌
import pymysql
def conn_mysql():
conn = pymysql.connect(
host = db_host,
user = db_user,
password= db_passwd,
port = 3306,
db = 'test_db',
charset='utf8'
)
return conn
연결 확인
import pandas as pd
sql = 'select * from test1'
test = pd.read_sql(sql, conn_mysql())
print(test)
_id name age grade
0 1000 jon 25 A
1 1001 sara 20 B
2 1002 may 23 F
3 1003 jay 21 C
👍 정상적으로 연결이 잘 된 모습 확인 가능
꼭 DB 연동이 아니더라도, 민감 정보를 코드에 사용하고 싶지 않을 때 사용하면 좋을듯
참조
반응형
'👩💻 Develope > Python' 카테고리의 다른 글
[Python] Shell에 명령어 전달하기 (0) | 2023.04.12 |
---|---|
[Python] 매개 변수와 람다(lambda) 표현식 (0) | 2023.04.10 |
[Pandas] 데이터프레임 정렬하기 (0) | 2023.04.06 |
[Pandas] 데이터프레임에서 대칭 차집합 구하기 (0) | 2023.04.05 |
[Pandas] 데이터프레임에서 차집합 구하기 (1) | 2023.04.04 |