カテゴリ: Python 更新日: 2026/04/03

Pythonでデータベースにデータを一括挿入する方法(bulk insert)を完全解説!初心者でも安心

Pythonでデータベースにデータを一括挿入する方法(bulk insert)
Pythonでデータベースにデータを一括挿入する方法(bulk insert)

先生と生徒の会話形式で理解しよう

生徒

「Pythonでデータベースにたくさんのデータを入れたいんですが、1件ずつだと大変そうです…」

先生

「Python(パイソン)では、データベースにデータをまとめて登録する方法があります。これをbulk insert(バルクインサート)と言います。」

生徒

「まとめて入れられるんですか?パソコンを触ったことがなくてもできますか?」

先生

「大丈夫です。箱に荷物を一つずつ入れるのではなく、段ボールごと運ぶイメージで説明します。」

1. bulk insert(バルクインサート)とは?

1. bulk insert(バルクインサート)とは?
1. bulk insert(バルクインサート)とは?

Python(パイソン)でデータベース操作をするとき、データを1件ずつ登録する方法があります。しかし、件数が多いと時間がかかります。bulk insert(バルクインサート)とは、複数のデータをまとめて一度に登録する方法です。

たとえば、100人分の名簿を1枚ずつ机に置くより、束ねて一気に置いた方が楽です。この考え方がbulk insertです。

2. Pythonとデータベースの基本的な関係

2. Pythonとデータベースの基本的な関係
2. Pythonとデータベースの基本的な関係

Pythonはプログラミング言語です。データベースとは、情報を整理して保存する箱のようなものです。Pythonからデータベースに命令を出して、データを保存したり読み出したりします。

今回は初心者向けに、よく使われるSQLite(エスキューライト)というデータベースを使います。ファイル1つで使えるので、難しい準備がいりません。

3. 1件ずつデータを挿入する方法

3. 1件ずつデータを挿入する方法
3. 1件ずつデータを挿入する方法

まずは、1件ずつ登録する基本の形を見てみます。これを知っておくと、bulk insertとの違いが分かりやすくなります。


import sqlite3

conn = sqlite3.connect("sample.db")
cursor = conn.cursor()

cursor.execute(
    "INSERT INTO users (name, age) VALUES (?, ?)",
    ("太郎", 20)
)

conn.commit()
conn.close()

この方法では、登録するたびに命令を送ります。少ない件数なら問題ありませんが、多くなると時間がかかります。

4. bulk insertでまとめて挿入する基本例

4. bulk insertでまとめて挿入する基本例
4. bulk insertでまとめて挿入する基本例

ここからが本題です。Pythonでは、executemany(エグゼキュートメニー)という仕組みを使うと、データをまとめて登録できます。


import sqlite3

conn = sqlite3.connect("sample.db")
cursor = conn.cursor()

users = [
    ("花子", 22),
    ("次郎", 25),
    ("三郎", 30)
]

cursor.executemany(
    "INSERT INTO users (name, age) VALUES (?, ?)",
    users
)

conn.commit()
conn.close()

リストにまとめたデータを、一度の命令で登録しています。これがbulk insertです。

5. bulk insertが速い理由

5. bulk insertが速い理由
5. bulk insertが速い理由

bulk insertが速い理由は、データベースとのやり取りが少なくなるからです。1件ずつだと、そのたびに「登録していいですか?」と確認します。

まとめて登録すると、「この箱を全部入れてください」と一度で済みます。通信や処理の回数が減るため、結果的に高速になります。

6. 大量データを扱うときの注意点

6. 大量データを扱うときの注意点
6. 大量データを扱うときの注意点

便利なbulk insertですが、注意点もあります。一度に大量すぎるデータを入れると、メモリを多く使ってしまいます。

その場合は、データを小分けにして何回かに分けて登録します。無理をせず、少しずつ運ぶイメージです。


for i in range(0, len(users), 100):
    batch = users[i:i+100]
    cursor.executemany(
        "INSERT INTO users (name, age) VALUES (?, ?)",
        batch
    )

7. よく使われるエラーと対処の考え方

7. よく使われるエラーと対処の考え方
7. よく使われるエラーと対処の考え方

初心者がつまずきやすいのは、テーブルが存在しない、列の数が合わない、といったミスです。これは箱の形と荷物の形が合っていない状態です。

エラーが出たら、テーブルの定義とデータの中身をゆっくり見比べてください。焦らず確認することが大切です。

8. bulk insertを使う場面の具体例

8. bulk insertを使う場面の具体例
8. bulk insertを使う場面の具体例

CSVファイルの読み込み、アンケート結果の保存、ログデータの登録など、大量データを扱う場面でbulk insertは活躍します。

Pythonのデータベース操作に慣れてきたら、必ず使う基本技術の一つです。

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

関連記事:
カテゴリの一覧へ
新着記事
New1
Python
PythonでREST APIを作る方法!初心者向けFastAPI入門|Python API開発の基本
New2
PHP
PHPのコード品質向上ツール完全解説!PHPStan(ピーエイチピースタン)とPHPCS(ピーエイチピーシーエス)で初心者でも安全にデバッグしよう
New3
Python
Pythonでデータベースのログを記録・監視する方法を完全解説!初心者向けデータベースログ管理入門
New4
PHP
PHPのログファイルを活用したエラートラッキング完全ガイド|初心者でもわかるPHPデバッグ入門
人気記事
No.1
Java&Spring記事人気No1
PHP
PHP のフォームデータの受け取り($_POST, $_GET)を完全解説!初心者向けガイド
No.2
Java&Spring記事人気No2
Python
Pythonのインストール&環境構築!Windows・Mac・Linuxでの手順を初心者向けに解説
No.3
Java&Spring記事人気No3
Python
PythonでExcelファイル(.xlsx)を操作する方法を徹底解説!初心者でもできるopenpyxl・pandasの使い方
No.4
Java&Spring記事人気No4
Python
Pythonのコンストラクタ(__init__)の使い方!初心者でもわかるオブジェクトの初期化
No.5
Java&Spring記事人気No5
Python
Pythonでテキストファイルを1行ずつ読み込む方法(readline() / readlines())
No.6
Java&Spring記事人気No6
PHP
PHPの特殊文字とエスケープ処理を完全ガイド!初心者向けにhtmlspecialcharsとhtmlentitiesをやさしく解説
No.7
Java&Spring記事人気No7
Python
Pythonでデータベースの接続プールを使う方法を徹底解説!初心者向けPythonデータベース接続プール入門
No.8
Java&Spring記事人気No8
PHP
PHPのPHPUnitを使った単体テスト完全ガイド!初心者でもわかるテストとデバッグ入門