메뉴 여닫기
개인 메뉴 토글
로그인하지 않음
만약 지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

파이썬 postgresql flask json 설치법

데브카페
  • 아래는 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` 프로필을 분리하는 것이 좋습니다.

Comments