본문 바로가기
Python 파이썬

게시판 샘플 데이터 입력하기

by 향테크 2025. 1. 30.

게시판 샘플데이터 입력하기

 

안녕하세요~

어제는 회원 데이터를 파이썬의 Faker 라이브러리를 이용해서 샘플 데이터 입력을 해보았습니다.

단순 숫자가 아닌 문자열로 임의의 데이터를 생성할 때 Faker 라이브러리를 쓰면 손쉽게 생성할 수 있었던 것 같습니다.

 

2025.01.29 - [Python 파이썬] - 샘플 데이터 입력하기 : faker 라이브러리

 

샘플 데이터 입력하기 : faker 라이브러리

이번 포스팅에서는 최근에 설계한 회원 테이블에 샘플 데이터를 입력하는 내용에 대해서 작성해 보도록 하겠습니다. 2025.01.27 - [MariaDB] - 게시판 DB 테이블 설계하기 일일이 데이터를 하나씩 넣

hyangtech.tistory.com

 

그럼 오늘은 회원 외에 게시판 카테고리를 생성하고, 게시판 데이터까지 100만 건가량 입력해 보도록 하겠습니다.

 

목차

 

게시판 ERD

게시판 ERD 확인하기

 

https://www.erdcloud.com/d/Egdx3hnT8XYH5WEXP

 

게시판 ERD

Draw ERD with your team members. All states are shared in real time. And it's FREE. Database modeling tool.

www.erdcloud.com

 

ERD를 확인하고 아래의 작업을 진행하고자 합니다.

  • 게시판 카테고리 테이블 경우 소량의 데이터가 들어갈 예정이니 카테고리 1~4까지의 명칭으로 수동으로 INSERT 하겠습니다.
  • 게시판 테이블의 MEMBER_ID와 CATEGORY_ID, 조회수는 랜덤으로 데이터를 지정하겠습니다.
  • 제목과 내용은 Faker 라이브러리를 이용해서 임의로 생성하겠습니다.

 

게시판 카테고리 데이터 입력

게시판 카테고리 테이블 정보

 

  • 게시판 카테고리의 PK는 자동증가 속성으로 되어 있습니다.
  • 카테고리명은 카테고리 1, 카테고리 2처럼 카테고리 4까지 총 4개의 데이터를 입력하도록 하겠습니다.
SELECT
    CONCAT('카테고리', seq) AS CATEGORY_NM,
    seq                 AS PRT_ORD,
    0                   AS REG_ID,
    NOW()               AS REG_DATE,
    1                   AS STATUS
FROM seq_1_to_4

 

MariaDB에서 seq_1_to_4는 시퀀스(sequence) 테이블의 한 예시로, 특정 범위의 숫자를 생성하는 데 사용됩니다.

이 테이블은 실제로 데이터베이스에 존재하는 테이블이 아니라, MariaDB의 시퀀스 엔진을 사용하여 가상으로 생성된 테이블입니다.

 

위의 쿼리를 실행하면 아래와 같이 데이터를 조회할 수 있습니다.

시퀀스 데이터 조회

 

데이터 INSERT 하기

INSERT INTO tb_board_category
(
    CATEGORY_NM, PRT_ORD, REG_ID, REG_DATE, STATUS
)
SELECT
    CONCAT('카테고리', seq) AS CATEGORY_NM,
    seq                 AS PRT_ORD,
    0                   AS REG_ID,
    NOW()               AS REG_DATE,
    1                   AS STATUS
FROM seq_1_to_4;

 

시퀀스 테이블로 조회한 데이터를 게시판 카테고리 테이블에 데이터를 입력하였습니다.

 

게시판 데이터 입력

게시판 테이블 정보

게시판의 샘플 데이터를 입력해 보도록 하겠습니다.

  • MEMBER_ID는 기존에 등록된 회원 데이터의 PK를 넣을 것입니다. 1에서 1000까지의 랜덤 숫자를 입력하도록 하겠습니다.
  • CATEGORY_ID는 카테고리 4개 중 하나의 값만 넣으면 되기에, 1에서 4까지의 랜덤 숫자를 입력하도록 하겠습니다.
  • TITLE은 Faker의 sentence()로 임의의 문장 값을 가져올 예정입니다.
  • CONTENTS는 Faker의 Paragraph() 임의의 단락 값을 가져올 예정입니다.

이 내용을 토대로 파이썬으로 데이터를 입력하는 샘플코드를 작성하였습니다.

from faker import Faker
from datetime import datetime
import pymysql
import random

faker = Faker('ko_KR')

# MariaDB 연결 정보
host = 'localhost'
user = 'root'
password = 'password'
database = 'tistory'

# MariaDB 연결
connection = pymysql.connect(
    host=host,
    user=user,
    password=password,
    database=database
)

print("시작 시간:", datetime.now())

try:
    with connection.cursor() as cursor:
        for i in range(100000):
            # 데이터 삽입 SQL 쿼리
            sql = "INSERT INTO tb_board " \
                  "(MEMBER_ID, CATEGORY_ID, TITLE, CONTENTS, HIT_CNT, REG_ID, REG_DATE, STATUS) " \
                  "VALUES (%s, %s, %s, %s, %s, %s, NOW(), 1) "

            # 삽입할 데이터
            profile = faker.profile()
            member_id = random.randint(1, 1000)
            category_id = random.randint(1, 4)
            hit_cnt = random.randint(10, 100000)
            title = faker.sentence(nb_words=6)  # 6개의 단어로 구성된 문장 (제목)
            content = faker.paragraph(nb_sentences=10)  # 10개의 문장으로 구성된 단락 (내용)

            data = (member_id, category_id, title, content, hit_cnt, member_id)

            # 쿼리 실행
            cursor.execute(sql, data)

    # 변경 사항 커밋
    connection.commit()
    print("데이터가 성공적으로 삽입되었습니다.")

finally:
    # 연결 종료
    connection.close()

print("종료 시간:", datetime.now())

 

100만 번을 반복해서 데이터를 생성하려고 하였으나, 오래 걸려서 10만 개로 변경하였습니다.

파이썬 실행 결과

MariaDB에서 데이터 건수를 확인해겠습니다.

 

COUNT(*) 함수를 통한 데이터 건수 확인

 

마무리

회원 데이터에 이어서 게시판 데이터까지 Faker 라이브러리를 통해 생성해 보았습니다.

또한, seq_1_to_4 시퀀스 가상 테이블을 이용해서 데이터를 간단하게 입력하는 방법도 알아보았습니다.

 

다음번에는 다양한 MariaDB의 SELECT 문법에 대해서 포스팅을 해보도록 하겠습니다.

감사합니다.

728x90
반응형