본문 바로가기

파이썬으로 로또 1등 도전기

10일차) 로또 원칙을 MySQL에 저장하는 방법

안녕하세요! **로또 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등 당첨일기**를 통해 여러분과 함께 계속해서 더 똑똑한 로또 시스템을 만들어가 보겠습니다. 그럼, 다음에 또 만나요!

행운을 빕니다 🍀