MySQL을 이용한 더미 데이터 생성 프로세스
🛠 MySQL을 이용한 더미 데이터 생성 프로세스 설명
✅ 이 코드의 흐름을 하나씩 쉽게 설명하고, 각 단계별 예시와 함께 정리하겠습니다.
✅ 코드의 주요 역할:
- 가짜 사용자 데이터(users) 100개 생성
- 가짜 주문 데이터(orders) 100개 생성
- MySQL에 데이터를 삽입
📌 1. MySQL 연결 설정
🚀 코드
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) 설정
🚀 코드
cursor = db_connection.cursor()
faker = Faker()
🔍 설명
✔ cursor = db_connection.cursor() → MySQL에서 SQL 명령을 실행할 수 있도록 커서(cursor) 생성
✔ faker = Faker() → 가짜 데이터(사용자명, 이메일 등)를 생성하는 Faker 라이브러리 사용
📌 예시
🏢 "MySQL 데이터베이스" = 대형 마트
🛒 "Cursor" = 계산대 직원 🧑💼
👩💻 "Python 코드" = 손님이 계산대에 줄 서는 것
✅ 즉, Python 코드가 MySQL과 데이터를 주고받을 준비 완료!
📌 3. 가짜 사용자 데이터 생성 (users 테이블)
🚀 코드
# 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)
🚀 코드
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 테이블)
🚀 코드
# 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 연결 종료
🚀 코드
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에 자동으로 생성하는 것!" 🚀