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개의 주문 데이터가 생성되었습니다! 🚀