
안녕하세요~
어제는 회원 데이터를 파이썬의 Faker 라이브러리를 이용해서 샘플 데이터 입력을 해보았습니다.
단순 숫자가 아닌 문자열로 임의의 데이터를 생성할 때 Faker 라이브러리를 쓰면 손쉽게 생성할 수 있었던 것 같습니다.
2025.01.29 - [Python 파이썬] - 샘플 데이터 입력하기 : faker 라이브러리
샘플 데이터 입력하기 : faker 라이브러리
이번 포스팅에서는 최근에 설계한 회원 테이블에 샘플 데이터를 입력하는 내용에 대해서 작성해 보도록 하겠습니다. 2025.01.27 - [MariaDB] - 게시판 DB 테이블 설계하기 일일이 데이터를 하나씩 넣
hyangtech.tistory.com
그럼 오늘은 회원 외에 게시판 카테고리를 생성하고, 게시판 데이터까지 100만 건가량 입력해 보도록 하겠습니다.
목차
게시판 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에서 데이터 건수를 확인해겠습니다.

마무리
회원 데이터에 이어서 게시판 데이터까지 Faker 라이브러리를 통해 생성해 보았습니다.
또한, seq_1_to_4 시퀀스 가상 테이블을 이용해서 데이터를 간단하게 입력하는 방법도 알아보았습니다.
다음번에는 다양한 MariaDB의 SELECT 문법에 대해서 포스팅을 해보도록 하겠습니다.
감사합니다.
'Python 파이썬' 카테고리의 다른 글
샘플 데이터 입력하기 : faker 라이브러리 (1) | 2025.01.29 |
---|---|
파이썬 문자열 주요 함수들 (1) | 2024.02.12 |