Database
Database - Chapter 3-19. SQL (DML) 심화(파이썬으로 데이터 랜덤 생성)
Chansman
2025. 3. 20. 15:43
🚀 파이썬으로 MySQL 더미 데이터 랜덤 생성하기
SQL에서 데이터를 테스트할 때 더미 데이터가 필요할 수 있습니다.
이 글에서는 파이썬을 활용하여 MySQL에 더미 데이터를 자동으로 생성하는 방법을 정리했습니다! 🎯
📌 1. 필요한 패키지 설치
MySQL에 연결하고 랜덤 데이터를 생성하기 위해 필요한 패키지를 설치합니다.
bash
pip install mysql-connector-python faker
✅ 설명
- mysql-connector-python → 파이썬에서 MySQL 데이터베이스에 연결하는 패키지
- faker → 가짜(랜덤) 데이터를 생성하는 라이브러리
💡 설치가 완료되면 다음 단계로 진행하세요!
📌 2. 데이터베이스 연결 및 설정
MySQL에 연결하고 랜덤 데이터를 삽입할 준비를 합니다.
✅ MySQL 연결 설정
python
import mysql.connector
from faker import Faker
import random # 파이썬 기본 모듈
# (1) MySQL 연결 설정
db_connection = mysql.connector.connect(
host='localhost',
user='root',
password='oz-password',
database='testdatabase'
)
# (2) MySQL 커서 생성
cursor = db_connection.cursor()
faker = Faker()
✅ 설명
- mysql.connector.connect() → MySQL 데이터베이스에 연결
- Faker() → 랜덤 데이터 생성을 위한 Faker 인스턴스 생성
- cursor = db_connection.cursor() → SQL 실행을 위한 커서 생성
📌 3. 랜덤 사용자(users) 데이터 생성
랜덤한 username과 email을 100개 생성하여 users 테이블에 삽입합니다.
✅ 100명의 사용자 데이터 삽입
python
# 100명의 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)
✅ 설명
- faker.user_name() → 랜덤한 사용자 이름 생성
- faker.email() → 랜덤한 이메일 주소 생성
- cursor.execute(sql, values) → SQL 실행을 통해 users 테이블에 데이터 삽입
💡 100개의 사용자 데이터가 자동으로 생성됩니다!
📌 4. user_id 가져오기
랜덤한 주문을 생성하기 위해 users 테이블에서 user_id 목록을 가져옵니다.
✅ 사용자 ID(user_id) 목록 가져오기
python
cursor.execute("SELECT user_id FROM users")
valid_user_id = [row[0] for row in cursor.fetchall()]
✅ 설명
- cursor.execute("SELECT user_id FROM users") → users 테이블에서 user_id 조회
- [row[0] for row in cursor.fetchall()] → 모든 user_id를 리스트로 저장
💡 이제 유효한 user_id 중 하나를 랜덤으로 선택하여 주문을 생성할 수 있습니다!
📌 5. 랜덤 주문(orders) 데이터 생성
랜덤한 user_id, product_name, quantity를 100개 생성하여 orders 테이블에 삽입합니다.
✅ 100개의 주문 데이터 삽입
python
for _ in range(100):
user_id = random.choice(valid_user_id) # 유효한 user_id 중 랜덤 선택
product_name = faker.word() # 랜덤 상품 이름 생성
quantity = random.randint(1, 10) # 1~10 사이의 랜덤 수량 설정
try:
sql = "INSERT INTO orders(user_id, product_name, quantity) VALUES(%s, %s, %s)"
values = (user_id, product_name, quantity)
cursor.execute(sql, values)
except:
print("오류 발생")
pass
✅ 설명
- random.choice(valid_user_id) → 랜덤한 사용자 ID 선택
- faker.word() → 랜덤한 상품 이름 생성
- random.randint(1, 10) → 1~10 사이의 랜덤 수량 선택
- try-except → 예외 발생 시 오류 메시지 출력 후 진행
💡 100개의 주문 데이터가 자동으로 생성됩니다!
📌 6. 데이터베이스 저장 및 연결 종료
모든 데이터를 데이터베이스에 반영(commit) 하고 연결을 종료합니다.
✅ 데이터 저장 및 연결 종료
python
db_connection.commit() # 변경사항 저장
cursor.close() # 커서 닫기
db_connection.close() # 데이터베이스 연결 종료
✅ 설명
- db_connection.commit() → 데이터베이스 변경사항 저장
- cursor.close() → 커서 닫기
- db_connection.close() → 데이터베이스 연결 종료
💡 이제 데이터베이스에 100명의 사용자와 100개의 주문 데이터가 생성되었습니다! 🚀