본문 바로가기

DB/MySQL

[ MySQL ] executemany - 다중 데이터를 한번에 Commit 하기

반응형

mysql-connector-python에서 execute()를 사용할 때, 배열을 활용하여 여러 개의 데이터를 한 번에 처리하는 방법에는 다음과 같은 두 가지가 있습니다.


1. execute()와 배열 활용 (단일 쿼리, 반복 실행)

Python에서 execute()는 한 번에 하나의 SQL 문을 실행하는데, 이를 반복문(for 루프)과 함께 사용하여 여러 개의 데이터를 처리할 수 있습니다.

import mysql.connector

# MySQL 연결 설정
conn = mysql.connector.connect(
    host="your_host",
    user="your_user",
    password="your_pass",
    database="your_db"
)

cursor = conn.cursor()

# 여러 개의 데이터를 배열에 저장
data_list = [
    (1, "Alice", 50000),
    (2, "Bob", 60000),
    (3, "Charlie", 70000)
]

# 반복문을 사용하여 여러 개의 데이터 삽입
for data in data_list:
    cursor.execute("INSERT INTO employees (id, name, salary) VALUES (%s, %s, %s)", data)

# 변경 사항 적용
conn.commit()

print(f"{cursor.rowcount} row(s) inserted.")

# 연결 종료
cursor.close()
conn.close()

🔹 특징

  • execute()를 여러 번 호출하여 데이터를 하나씩 처리합니다.
  • 반복문을 사용하여 여러 개의 데이터를 순차적으로 실행합니다.
  • 실행 속도는 비교적 느릴 수 있습니다.

2. executemany()와 배열 활용 (배치 실행)

executemany()를 사용하면 여러 개의 데이터를 한 번의 SQL 실행으로 처리할 수 있어 더 효율적입니다.

import mysql.connector

# MySQL 연결 설정
conn = mysql.connector.connect(
    host="your_host",
    user="your_user",
    password="your_pass",
    database="your_db"
)

cursor = conn.cursor()

# 여러 개의 데이터를 리스트로 저장
data_list = [
    (1, "Alice", 50000),
    (2, "Bob", 60000),
    (3, "Charlie", 70000)
]

# executemany()를 사용하여 여러 개의 데이터 삽입
cursor.executemany("INSERT INTO employees (id, name, salary) VALUES (%s, %s, %s)", data_list)

# 변경 사항 적용
conn.commit()

print(f"{cursor.rowcount} row(s) inserted.")

# 연결 종료
cursor.close()
conn.close()

🔹 특징

  • executemany()를 사용하면 한 번에 여러 개의 데이터를 처리할 수 있어 성능이 향상됩니다.
  • execute()를 여러 번 호출하는 것보다 빠릅니다.
  • SQL 문을 여러 번 실행하는 것이 아니라, 한 번의 실행으로 여러 개의 데이터를 처리합니다.

💡 execute() vs executemany() 비교

메서드 실행 방식 성능 사용 예
execute() 반복문을 사용하여 하나씩 실행 느림 단일 SQL 실행 또는 소량 데이터 처리
executemany() 한 번에 여러 개 실행 (배치 실행) 빠름 다량의 데이터를 한 번에 삽입 또는 업데이트

대량 데이터를 삽입하거나 업데이트할 경우 executemany()를 사용하는 것이 좋습니다.

반응형