「Python」executemanyメソッドでMySQLに複数件データを挿入するサンプル

環境
Python 3.9.13
Windows 11 Pro 21H2 64bit
MySQL 8.0.30

1.ライブラリmysql-connector-pythonをインストールします

pip install mysql-connector-python

2.テーブル「usertbl」を作成します

CREATE TABLE `usertbl` (
  `userid` int NOT NULL AUTO_INCREMENT,
  `addr` varchar(50) COLLATE utf8mb4_general_ci NOT NULL,
  PRIMARY KEY (`userid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci

説明
列名userid
AUTO_INCREMENT データを追加した時にカラムに対して現在格納されている最大の数値に1 を追加します。
PRIMARY KEY プライマリーキー(主キー)

3.executeメソッドについて
executemanyメソッドは共にCursorオブジェクトのメソッド
execute() -> データベースへの指令(SQL文やコマンド)を実行します。

引数: operation(SQL文,コマンド), params=None(dictかtuple, operationの引数になるもの), multi=Flase
multi -> operationで指定される複数のSQL文を個別に実行できるようにし、かつイテレータを返します。

使用例

import mysql.connector

# DB接続情報  ユーザー名 パスワード名
conn = mysql.connector.connect(
    host="localhost", port="3306", user="root", password="#123456@"
)

# DB接続状況確認
if conn.is_connected():
    try:
        # DB再接続
        conn.ping(reconnect=True)
        
        # 自動コミット禁止
        conn.autocommit = False

        # カーソル作成
        cft = conn.cursor()

        # DB選択
        cft.execute("use arkdb;")

        # insert構文
        sql = ("""
        INSERT INTO usertbl  (addr)
        VALUES 
            (%s)
        """)

        addr = [
            ('東京',),
            ('大阪',),
            ('福岡',)
        ]
        
        # 複数件のデータを挿入
        cft.executemany(sql, addr)
        
        # コミット
        conn.commit()
        
        # 実行結果
        print(f"{cft.rowcount} 件追加しました。")
        
    except mysql.connector.Error as e:
        # データベースのロールバック
        conn.rollback()
        print(e)
        
    finally:
        # データベースのクローズ
        cft.close()
        conn.close()
else:

    exit()

 

Python

Posted by arkgame