다른 명령
- 아래는 PostgreSQL 데이터베이스 연결 정보를 JSON 파일로 저장하는 예제입니다.
- 보안을 위해 중요한 정보는 직접 공유하지 마시고, 필요시 `.gitignore`에 추가하여 버전 관리에서 제외하세요.
db_config.json
{
"development": {
"host": "localhost",
"port": 5432,
"database": "myflaskapp_dev",
"user": "postgres",
"password": "devpassword123",
"schema": "public"
},
"test": {
"host": "localhost",
"port": 5432,
"database": "myflaskapp_test",
"user": "postgres",
"password": "testpassword123",
"schema": "public"
},
"production": {
"host": "db.production.com",
"port": 5432,
"database": "myflaskapp_prod",
"user": "prod_user",
"password": "prodpassword456",
"schema": "app_schema"
}
}
Flask에서 사용하는 방법
import json
import psycopg2
from flask import Flask
app = Flask(__name__)
# JSON 파일에서 설정 로드
def load_db_config(env='development'):
with open('db_config.json') as f:
config = json.load(f)
return config.get(env, config['development'])
@app.route('/')
def test_connection():
db_config = load_db_config()
try:
conn = psycopg2.connect(
host=db_config['host'],
port=db_config['port'],
database=db_config['database'],
user=db_config['user'],
password=db_config['password']
)
cur = conn.cursor()
cur.execute("SELECT version();")
version = cur.fetchone()[0]
cur.close()
conn.close()
return f"Connected to PostgreSQL: {version}"
except Exception as e:
return f"Connection failed: {str(e)}"
if __name__ == '__main__':
app.run(debug=True)
- 보안 강화를 위한 추가 권장 사항
1. **환경 변수 사용** (더 안전한 방법):
import os
from dotenv import load_dotenv
load_dotenv() # .env 파일에서 환경 변수 로드
db_config = {
'host': os.getenv('DB_HOST'),
'password': os.getenv('DB_PASSWORD')
# ...
}
2. `.gitignore`에 추가:
db_config.json .env
3. **권한 설정**:
chmod 600 db_config.json # 소유자만 읽기/쓰기 가능
4. **다중 환경 지원**을 위해 위와 같이 `development`, `test`, `production` 프로필을 분리하는 것이 좋습니다.