안녕하세요, 여러분! 오늘은 우리 로또 번호 관리 웹 애플리케이션에서 로또 번호를 가져오는 API의 동작을 살펴보려고 해요. 이 API는 사용자가 특정 회차의 로또 번호를 쉽게 조회할 수 있게 도와줍니다. 자, 그럼 코드의 각 부분을 재미있게 설명해볼까요?
#### API 엔드포인트: `/get_lotto_numbers`
이 API는 로또 번호를 요청할 수 있는 엔드포인트입니다. 사용자가 특정 회차의 번호를 조회할 때 호출됩니다. **이제 코드의 주인공을 만나볼까요!**
@app.route('/get_lotto_numbers')
def get_lotto_numbers():
여기서 `@app.route('/get_lotto_numbers')`는 이 URL로 요청이 들어오면 `get_lotto_numbers()` 함수를 실행하라는 의미예요. 마치 로또 번호를 요청하는 손님이 들어왔을 때, 마법처럼 그에 맞는 서비스를 제공하는 것과 같죠!
#### 회차 정보 가져오기
이제 사용자가 요청한 회차를 받아볼게요. 사용자가 웹에서 입력한 회차 정보를 `round`라는 변수에 저장합니다.
round = request.args.get('round')
여기서는 사용자가 선택한 회차 정보를 가져오는데, 마치 여러분이 "이번 주 로또 몇 회차?"라고 물어보는 것과 같아요.
#### 데이터베이스 연결하기
이제 로또 번호를 가져오기 위해 데이터베이스에 연결해야 해요. `connect_to_db()` 함수를 호출하여 데이터베이스와 연결합니다.
connect_to_db()
이 단계에서는 마치 로또 번호가 담긴 금고에 접근하는 것과 비슷해요. 이제 금고 안에 들어있는 소중한 번호들을 꺼낼 준비가 되었네요!
#### SQL 쿼리로 로또 번호 조회하기
이제 본격적으로 SQL 쿼리를 사용해서 데이터베이스에서 로또 번호를 가져올 차례입니다. 다음 코드에서 우리의 주인공 SQL 쿼리를 살펴볼까요?
sql = """
SELECT seq, lucky_numbers, lotto_rank, lucky_yn
FROM lotto_lucky_numbers
WHERE target_lotto_round = %s
ORDER BY
CASE lotto_rank
WHEN 1 THEN 1
WHEN 2 THEN 2
WHEN 3 THEN 3
WHEN 4 THEN 4
WHEN 5 THEN 5
ELSE 6
END,
seq ASC
"""
이 쿼리는 `lotto_lucky_numbers` 테이블에서 특정 회차에 해당하는 번호들을 가져옵니다. 그리고 `lotto_rank`에 따라 정렬한 다음, 동일한 순서로 번호를 보여줍니다. 즉, 1등, 2등, 3등, ... 의 순서로 정리되죠. 마치 로또 순위에 따라 번호들이 줄 서 있는 것처럼요!
#### 데이터 가져오기 및 반환하기
데이터를 가져온 후, 결과를 JSON 형식으로 변환해 반환합니다.
numbers = [
{"seq": row[0], "luck_numbers": row[1], "lotto_rank": row[2], "lucky_yn": row[3]}
for row in cursor.fetchall()
]
return jsonify({"numbers": numbers})
각 번호의 `seq`, `luck_numbers`, `lotto_rank`, `lucky_yn` 정보를 담아 리스트로 만들고, 이를 JSON 형태로 변환해 클라이언트에 전달합니다. 웹 애플리케이션이 원하는 정보를 간편하게 받을 수 있도록 준비하는 거죠!
#### 에러 처리
마지막으로, 만약 코드 실행 중에 문제가 생기면 오류 메시지를 반환합니다.
except Exception as e:
return jsonify({"error": str(e)}), 500
이렇게 함으로써, 사용자에게 문제의 원인을 알려주고, 더 나은 경험을 제공하려고 합니다.
#### 마무리
오늘 살펴본 `/get_lotto_numbers` API는 사용자가 원하는 로또 번호를 간편하게 가져올 수 있도록 돕는 멋진 기능이었습니다. 데이터베이스와의 소통, SQL 쿼리의 힘, 그리고 JSON 포맷의 활용까지, 모두가 함께 어우러져 훌륭한 서비스를 만들어내는 과정이었어요. 다음에는 또 다른 흥미로운 API를 살펴보도록 해요! 🚀🎉
'파이썬으로 로또 1등 도전기' 카테고리의 다른 글
18일차) 일본의 천재 분석가 후나츠 사카이의 로또 전략을 파헤쳐보자! (0) | 2024.10.27 |
---|---|
17일차) 유명한 로또 번호 선택 기법들 총정리 (2) | 2024.10.27 |
15일차) 로또 번호 관리 화면에 메뉴별로 기능 추가하기 (0) | 2024.10.26 |
14일차) 로또번호 예측기능을 웹페이지로 확인하기 (0) | 2024.10.24 |
13일차) 로또룰을 적용해서 당첨 번호 만들어서 저장까지!!! (0) | 2024.10.23 |