프로젝트

MySQL을 이용한 더미 데이터 생성 프로세스

Chansman 2025. 3. 20. 19:45

🛠 MySQL을 이용한 더미 데이터 생성 프로세스 설명

이 코드의 흐름을 하나씩 쉽게 설명하고, 각 단계별 예시와 함께 정리하겠습니다.
코드의 주요 역할:

  • 가짜 사용자 데이터(users) 100개 생성
  • 가짜 주문 데이터(orders) 100개 생성
  • MySQL에 데이터를 삽입

📌 1. MySQL 연결 설정

🚀 코드

python
 
import mysql.connector
from faker import Faker
import random

# 1. MySQL 연결 설정
db_connection = mysql.connector.connect(
    host='localhost',
    user='root',
    password='7722',
    database='testdatabase'
)

🔍 설명

✔ mysql.connector.connect()를 사용해 MySQL 데이터베이스에 연결
✔ host='localhost' → 로컬에서 MySQL 실행
✔ user='root' → MySQL 사용자 이름
✔ password='7722' → MySQL 비밀번호
✔ database='testdatabase' → 사용할 데이터베이스 지정

📌 예시
🏢 "MySQL 데이터베이스" = 도서관 📚
👩‍💻 "Python 코드" = 도서관 관리자 🏫
📞 "MySQL 연결" = 도서관에 전화 걸어 "데이터 가져와 주세요!" 📞

즉, Python이 MySQL에 접속해서 데이터를 넣고 가져올 준비를 함!


📌 2. MySQL 커서(Cursor) 설정

🚀 코드

python
 
cursor = db_connection.cursor()
faker = Faker()

🔍 설명

✔ cursor = db_connection.cursor() → MySQL에서 SQL 명령을 실행할 수 있도록 커서(cursor) 생성
✔ faker = Faker() → 가짜 데이터(사용자명, 이메일 등)를 생성하는 Faker 라이브러리 사용

📌 예시
🏢 "MySQL 데이터베이스" = 대형 마트
🛒 "Cursor" = 계산대 직원 🧑‍💼
👩‍💻 "Python 코드" = 손님이 계산대에 줄 서는 것

즉, Python 코드가 MySQL과 데이터를 주고받을 준비 완료!


📌 3. 가짜 사용자 데이터 생성 (users 테이블)

🚀 코드

python
 
# users 데이터 생성
for __ in range(100):
    username = faker.user_name()
    email = faker.email()

    sql = "INSERT INTO users(username, email) VALUES(%s, %s)"
    values = (username, email)

    cursor.execute(sql, values)

db_connection.commit()  # ✅ users 데이터 저장

print("100개의 users 더미 데이터가 성공적으로 삽입되었습니다!")

🔍 설명

✔ for __ in range(100): → 100번 반복 (100명의 가짜 사용자 생성)
✔ username = faker.user_name() → 가짜 사용자명 생성 (예: john_doe)
✔ email = faker.email() → 가짜 이메일 생성 (예: john@example.com)
✔ INSERT INTO users(username, email) VALUES(%s, %s) → SQL 쿼리 실행
✔ db_connection.commit() → 실제 데이터 저장 (확정)

📌 예시
🏢 "MySQL" = 인사팀
👨‍💻 "Python 코드" = 인사팀 직원
📋 "SQL INSERT" = 새 직원 정보 추가

즉, Python이 MySQL에 "100명의 가짜 사용자" 데이터를 넣음!


📌 4. 사용자 ID 가져오기 (user_id)

🚀 코드

python
 
cursor.execute("SELECT id FROM users")
valid_user_id = [row[0] for row in cursor.fetchall()]

🔍 설명

✔ SELECT id FROM users → users 테이블에서 id 값만 가져옴
✔ cursor.fetchall() → 모든 결과 가져오기
✔ [row[0] for row in cursor.fetchall()] → ID 리스트로 저장

📌 예시
🏢 "MySQL" = 학교
📋 "Python 코드" = 출석부 담당 교사
🎓 "SELECT id FROM users" = 출석부에서 학생 ID만 가져오기

즉, Python이 "users" 테이블에서 ID 리스트를 가져와 저장!


📌 5. 가짜 주문 데이터 생성 (orders 테이블)

🚀 코드

python
 
# 100개의 주문 더미 데이터 생성
for __ in range(100):
    use_id = random.choice(valid_user_id)  # ✅ 유효한 사용자 ID 선택
    product_name = faker.word()
    quantity = random.randint(1, 10)

    try:
        sql = "INSERT INTO orders(user_id, product_name, quantity) VALUES(%s, %s, %s)"
        values = (use_id, product_name, quantity)
        cursor.execute(sql, values)
        db_connection.commit()  # ✅ 즉시 커밋

    except Exception as e:
        print(f"INSERT 오류 발생: {e}")  # ✅ 오류 출력

🔍 설명

✔ random.choice(valid_user_id) → 랜덤한 사용자 ID 선택
✔ faker.word() → 가짜 상품명 생성
✔ random.randint(1, 10) → 1~10 사이의 랜덤한 개수 선택
✔ INSERT INTO orders(user_id, product_name, quantity) VALUES(%s, %s, %s) → 주문 데이터 저장
✔ db_connection.commit() → 즉시 저장
✔ except Exception as e: → 에러 발생 시 출력

📌 예시
🏢 "MySQL" = 온라인 서점
🛒 "Python 코드" = 고객이 책 주문
📋 "SQL INSERT" = 새로운 주문 추가

즉, 100개의 랜덤한 주문을 orders 테이블에 저장!


📌 6. MySQL 연결 종료

🚀 코드

python
 
cursor.close()
db_connection.close()

print("100개의 주문 더미 데이터가 성공적으로 삽입되었습니다!")

🔍 설명

✔ cursor.close() → SQL 실행을 담당하는 커서 종료
✔ db_connection.close() → MySQL 데이터베이스 연결 종료
✔ print() → 데이터 삽입 완료 메시지 출력

📌 예시
🏢 "MySQL" = 은행
👩‍💻 "Python 코드" = 은행 고객
🔒 "MySQL 연결 종료" = 은행 업무 끝나고 창구 닫기

즉, 모든 데이터가 MySQL에 저장된 후, 연결을 안전하게 종료!


🚀 전체 프로세스 흐름 요약

1️⃣ MySQL 데이터베이스 연결
2️⃣ 100명의 가짜 사용자 데이터 생성 (users 테이블)
3️⃣ 사용자 ID 가져오기 (user_id 리스트 생성)
4️⃣ 100개의 가짜 주문 데이터 생성 (orders 테이블)
5️⃣ MySQL 커넥션 종료

💡 즉, 이 코드의 목적은 "테스트용 더미 데이터를 MySQL에 자동으로 생성하는 것!" 🚀