안녕하세요! **로또 1등 당첨일기**에 오신 것을 환영합니다. 오늘은 여러분과 함께 **MySQL**을 사용해 로또 추첨 규칙을 저장하고, 그 데이터를 Python에서 불러와 활용하는 방법을 배워볼 거예요.
로또 번호를 추첨할 때 "첫 번째와 여섯 번째 번호는 제외해야지!", "보너스 번호는 빼야겠어!" 하는 다양한 룰을 설정하곤 하시죠? 하지만 매번 이걸 기억하고 입력하는 건 너무 귀찮잖아요! 그래서 오늘은 그 룰들을 **데이터베이스에 저장**하고 **자동으로 불러오는 시스템**을 만들어 볼게요.
---
### 1. MySQL로 데이터베이스 만들기
먼저 MySQL이 깔려있어야겠죠! 로컬에 MySQL이 없다면 [MySQL 공식 페이지](https://dev.mysql.com/downloads/)에서 설치하시면 됩니다.
설치가 완료됐으면, 이제 MySQL에 접속해봅시다.
# MySQL 접속 (root 사용자의 비밀번호 입력)
mysql -u root -p
---
### 2. 새로운 데이터베이스 생성
로또 규칙을 저장할 새로운 데이터베이스를 만들어볼게요. **lotto_db**라는 이름으로 만들고 이 데이터베이스를 사용할 거예요.
-- 데이터베이스 생성
CREATE DATABASE lotto_db;
-- 데이터베이스 목록 확인
SHOW DATABASES;
-- 데이터베이스 선택
USE lotto_db;
`CREATE DATABASE lotto_db;` 명령어로 **로또 데이터베이스**가 탄생했습니다! 데이터베이스가 잘 생성됐는지 `SHOW DATABASES;`로 확인하고, `USE lotto_db;`로 우리가 만든 데이터베이스를 사용하도록 선택합니다.
---
### 3. `lotto_rules` 테이블 만들기
이제 규칙을 저장할 테이블을 만들어야겠죠. 이 테이블에는 각 룰의 조건, 적용 순서, 보너스 번호 포함 여부 등을 저장할 거예요.
-- lotto_rules 테이블 생성
CREATE TABLE lotto_rules (
id INT AUTO_INCREMENT PRIMARY KEY, -- 고유 ID
condition_type VARCHAR(10) NOT NULL, -- 룰 타입 (ADD/REMOVE)
order_sequence VARCHAR(50) NOT NULL, -- 제외할 번호 순서 (예: "1,6")
bonus_included TINYINT(1) NOT NULL, -- 보너스 번호 포함 여부 (1: 포함, 0: 미포함)
lotto_round VARCHAR(10) DEFAULT NULL, -- 특정 회차 기준으로 사용할 수 있는 룰
pre_lotto_round VARCHAR(10) DEFAULT NULL -- 이전 회차 정보
);
위 명령어로 테이블을 만들면 이제 **lotto_rules** 테이블이 생성됐습니다. 이 테이블에 로또 규칙들을 저장하게 되죠.
---
### 4. 테이블에 규칙 추가하기
테이블이 만들어졌으니, 여기에 규칙을 하나 추가해볼까요? 예를 들어, 첫 번째와 여섯 번째 번호를 제외하고, 보너스 번호도 빼는 룰을 추가해볼게요.
-- 데이터 추가
INSERT INTO lotto_rules (condition_type, order_sequence, bonus_included, lotto_round, pre_lotto_round)
VALUES ('REMOVE', '1,6', 1, '2', '1');
-- 추가된 데이터 확인
SELECT * FROM lotto_rules;
짜잔! 이제 `SELECT * FROM lotto_rules;`로 규칙이 제대로 추가됐는지 확인해봅시다. 이 룰은 **첫 번째와 여섯 번째 번호를 제외**하고, **보너스 번호도 제외**하는 규칙이에요.
---
### 5. 파이썬에서 MySQL과 연결하기
이제 본격적으로 **Python**을 사용해 MySQL에 연결해볼 거예요. 이를 위해 `pymysql`이라는 라이브러리를 사용할 거고, 이 라이브러리로 MySQL에서 저장된 로또 규칙을 가져옵니다.
#### 먼저 `pymysql` 설치:
pip install pymysql
설치가 끝났으면, 이제 Python 코드로 MySQL에 접속하고 데이터를 가져오는 코드를 작성해볼게요.
import pymysql
def get_lotto_rules_from_db():
connection = pymysql.connect(
host='localhost', # MySQL 서버 주소 (로컬이므로 localhost)
user='root', # 사용자명
password='your_password', # MySQL 비밀번호
database='lotto_db' # 우리가 만든 데이터베이스 이름
)
try:
with connection.cursor() as cursor:
# lotto_rules 테이블에서 데이터 가져오기
sql = """
SELECT condition_type, order_sequence, bonus_included, lotto_round, pre_lotto_round
FROM lotto_rules
"""
cursor.execute(sql)
result = cursor.fetchall()
for row in result:
print(row)
finally:
connection.close()
# 함수 호출
get_lotto_rules_from_db()
위 코드를 실행하면, 우리가 MySQL에 저장해놓은 로또 규칙이 출력됩니다. 이제 Python 코드에서 데이터를 가져와서 **자동으로 로또 번호 추첨에 사용할 수 있게** 되었네요!
---
### 6. 데이터를 기반으로 로또 번호 추첨하기
이제 MySQL에서 가져온 규칙을 이용해 로또 번호를 추첨할 준비가 되었습니다. 가져온 규칙에 따라 로또 번호를 제외하고, 남은 번호들 중에서 랜덤으로 선택해볼게요.
import random
def generate_lotto_numbers(excluded_numbers):
all_numbers = set(range(1, 46)) # 1부터 45까지의 숫자
available_numbers = list(all_numbers - set(excluded_numbers)) # 제외된 번호 제외
lotto_numbers = random.sample(available_numbers, 6) # 6개의 번호 랜덤 추출
return sorted(lotto_numbers)
# 예시: 첫 번째와 여섯 번째 번호를 제외한 번호 추첨
excluded_numbers = [1, 6]
for i in range(5):
print(f"세트 {i+1}: {generate_lotto_numbers(excluded_numbers)}")
이렇게 해서 여러분은 **MySQL에서 저장된 룰을 불러와 로또 번호 추첨에 적용하는 시스템**을 구축했습니다!
---
### 결론
이제 MySQL을 이용해 **데이터베이스에 로또 규칙을 저장**하고, Python을 통해 그 데이터를 불러와 **로또 번호 추첨에 활용**할 수 있게 되었어요. 이 시스템을 통해 반복적인 작업을 자동화하고, 더 체계적인 방식으로 로또 번호를 추출할 수 있습니다. 다음번에는 더 복잡한 규칙을 추가해보거나, 데이터를 분석하는 방법을 알아볼까요?
**로또 1등 당첨일기**를 통해 여러분과 함께 계속해서 더 똑똑한 로또 시스템을 만들어가 보겠습니다. 그럼, 다음에 또 만나요!
행운을 빕니다 🍀
'파이썬으로 로또 1등 도전기' 카테고리의 다른 글
12일차) 로또 예측 데이터베이스 구조 만들기 (0) | 2024.10.23 |
---|---|
11일차) lotto_rules에서 제외수 가져와서 당첨번호 추출하기 (1) | 2024.10.22 |
9일차) 원칙 및 예상번호 등록을 위한 MySQL DB설정 준비 (1) | 2024.10.14 |
8일차) 특정회차 제외수 설정해서 로또번호 추출하기 (0) | 2024.10.13 |
7일차) 로또 번호를 가져와서 특정회차 제외 번호 설정하기 (0) | 2024.10.13 |