IT/SW Dev.

Vercel 에서 flask 와 neon 연결(.env(local), environment variables)

부티형 2025. 3. 2. 07:42
반응형

출처: https://flask.palletsprojects.com/en/stable/

 

Flask 애플리케이션에서 Vercel의 환경 변수로 저장된 DATABASE_URL을 가져오는 방법은 os.getenv()를 사용하는 것입니다. Vercel에서는 배포된 애플리케이션에 대해 환경 변수를 설정할 수 있으며, 이 값은 코드에서 환경 변수로 접근할 수 있습니다.

Vercel에서 DATABASE_URL 설정하기:

  1. Vercel Dashboard에서 환경 변수 설정
    • Vercel 대시보드에 로그인합니다.
    • 해당 프로젝트로 이동합니다.
    • Settings 탭에서 Environment Variables 섹션을 찾습니다.
    • Key에 DATABASE_URL을 입력하고, Value에 Neon PostgreSQL 데이터베이스 URL을 입력합니다.
    예시:
  2. DATABASE_URL=postgresql://username:password@hostname:port/dbname
  3. Flask 애플리케이션에서 환경 변수 접근
    • Flask에서 DATABASE_URL을 가져오기 위해 os.getenv()를 사용합니다.
    • 이를 SQLALCHEMY_DATABASE_URI에 할당하여 데이터베이스에 연결할 수 있습니다.
반응형

코드 예시:

import os
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from dotenv import load_dotenv

# 환경 변수 로드 (로컬 환경에서만 필요, Vercel에서는 자동으로 환경 변수가 로드됨)
load_dotenv()

app = Flask(__name__)

#Neon PostgreSQL 연결 정보 (환경 변수 활용)
database_url = os.getenv('DATABASE_URL', '')

# 'postgres://' → 'postgresql://'로 변경
if database_url.startswith("postgres://"):
    database_url = database_url.replace("postgres://", "postgresql://", 1)

# Vercel에서 제공하는 DATABASE_URL 환경 변수를 사용하여 연결
app.config['SQLALCHEMY_DATABASE_URI'] = database_url

# SQLAlchemy 초기화
db = SQLAlchemy(app)

@app.route('/')
def home():
    return "Hello, World!"

if __name__ == "__main__":
    app.run(debug=True)

.env 파일 (로컬 개발 환경에서만 사용):

Vercel에서는 환경 변수를 자동으로 처리하지만, 로컬 개발 환경에서는 .env 파일을 사용하여 환경 변수를 관리할 수 있습니다.

DATABASE_URL=postgresql://username:password@hostname:port/dbname

이 파일은 python-dotenv 라이브러리로 로드되며, 개발 환경에서만 사용됩니다.

Vercel 배포 시:

Vercel에 배포되면, Vercel 대시보드에서 설정한 DATABASE_URL 환경 변수를 Flask 애플리케이션에서 자동으로 사용할 수 있습니다. 따라서 별도의 .env 파일은 필요하지 않습니다. Vercel은 배포된 애플리케이션에서 해당 환경 변수를 자동으로 로드합니다.

이 방법을 사용하면 Vercel에서 자동으로 관리되는 환경 변수를 Flask 애플리케이션에서 안전하게 사용할 수 있습니다.

반응형