포트폴리오 예시에서 클론합니다.
그 다음 우선 파이썬을 설치해줍니다.
brew install python3.
가상 환경을 설치합니다.
View > Command Palette를 클릭한 이후 venv를 선택하여 가상환경을 설치합니다.
그리고 새로운 터미널을 열어봅시다. 그리고 가상환경에 Flask를 설치합니다.
python -m pip install flask
파일이름을 main.py에서 app.py로 바꿔줍니다.
왜냐하면 Flask는 기본적으로 app.py 또는 wsgi.py 파일을 애플리케이션의 시작점으로 찾습니다.
다른 방법도 존재합니다. FLASK_APP 환경 변수를 사용하여 Flask에게 애플리케이션의 시작점이 main.py라는 것을 명시적으로 알려주는 것입니다.
export FLASK_APP=main.py
그 다음 아래 코드를 통해 실행합니다.
python -m flask run
새 Python 프로젝트 생성하고 가상 환경을 설정합니다.
아래와 같이 라이브러리들을 설치합니다.
pip install requests pyodbc Flask
requests는 API 요청을 위한, Flask는 웹 애플리케이션을 만들기 위한 라이브러리입니다.
pyodbc는 Python에서 ODBC (Open Database Connectivity)를 사용하여 데이터베이스에 접근할 수 있게 해주는 라이브러리입니다.
만약 ODBC를 설치하라는 문구가 뜨면 ODBC 설치를 참고하여 설치해주세요.
그리고 app.py에서 아래 코드와 같이 작성합니다.
from flask import Flask, jsonify # Flask는 웹 어플리케이션을 생성하고 관리하는 기본 클래스이고, jsonify는 JSON 형식으로 데이터를 응답으로 반환하는데 사용합니다.
import requests # HTTP 요청을 쉽게 수행할 수 있게 해주는 라이브러리입니다.
import pyodbc
app = Flask(__name__) # Flask 앱 인스턴스를 생성합니다.
def create_table():
server = '서버이름을 작성해주세요'
database = '데이터베이스 이름을 작성해주세요'
username = 'admin 이름을 작성해주세요'
password = '비밀번호를 작성해주세요'
driver = '{ODBC Driver 17 for SQL Server}'
connection = pyodbc.connect('DRIVER=' + driver + ';SERVER=' + server + ';PORT=1433;DATABASE=' + database + ';UID=' + username + ';PWD=' + password)
cursor = connection.cursor()
create_table_query = """
CREATE TABLE DogImages (
ID INT PRIMARY KEY IDENTITY(1,1),
ImageURL NVARCHAR(1000) NOT NULL
);
"""
cursor.execute(create_table_query)
connection.commit()
connection.close()
# 프로그램을 처음 실행할 때 테이블을 생성합니다.
create_table()
def fetch_api_data():
"""API에서 데이터를 가져오는 함수"""
response = requests.get("https://dog.ceo/api/breeds/image/random")
data = response.json()
return data["message"]
def save_to_azure(image_url):
"""Azure SQL 데이터베이스에 데이터를 저장하는 함수"""
# 연결 정보 설정
server = '서버이름을 써주세요'
database = '데이터베이스 이름을 써주세요'
username = 'admin 이름을 써주세요'
password = '비밀번호를 써주세요'
driver = '{ODBC Driver 17 for SQL Server}'
# 데이터베이스 연결
connection = pyodbc.connect('DRIVER=' + driver + ';SERVER=' + server + ';PORT=1433;DATABASE=' + database + ';UID=' + username + ';PWD=' + password)
cursor = connection.cursor()
# 데이터를 저장할 테이블 및 컬럼 정보 설정 후 쿼리 실행
insert_query = "INSERT INTO DogImages (ImageURL) VALUES (?)"
cursor.execute(insert_query, image_url)
connection.commit()
connection.close()
@app.route('/')
def home():
return "Welcome to the Home Page!"
@app.route('/fetch_and_save')
def fetch_and_save():
image_url = fetch_api_data()
save_to_azure(image_url)
return jsonify({"message": "Data fetched and saved successfully", "image_url": image_url})
if __name__ == '__main__':
app.run(debug=True) # debug=True는 개발 모드에서만 사용해야 합니다. 배포 시에는 제거하거나 False로 설정하세요.
그 다음 아래 명령어를 통해 실행합시다.
flask run
그 다음 http://127.0.0.1:5000/fetch_and_save에 들어가면 성공했다고 나옵니다.
이를 확인하려면 Azure 포털에서도 확인 가능합니다.
Query editor에 들어가서 아래 코드를 입력합니다.
SELECT * FROM DogImages;
만약 결과가 보인다면 성공입니다.
포트폴리오 웹 사이트에 Dockerfile을 만듭니다.
FROM python:3.10-slim
WORKDIR /app
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]
그리고 docker-compose.yml 파일도 만듭니다.
version: '3.8'
services:
web:
build: .
ports:
- "5000:5000"
environment:
- AZURE_DB_SERVER=서버 이름을 써주세요
- AZURE_DB_NAME=데이터베이스 이름을 써주세요
- AZURE_DB_USER=유저이름을 써주세요
- AZURE_DB_PASS=비밀번호를 써주세요
그 다음 아래 코드를 입력합니다.
docker-compose up --build
이렇게 하면 Flask 웹 애플리케이션과 Azure SQL 데이터베이스의 연결을 Docker와 docker-compose를 사용하여 로컬에서 실행하게 됩니다.
참고 자료
Azure SQL Database 만들기
❗️ 질문 기록