Python MySQL executemany関数で複数件数を挿入するサンプル

環境
Python3.9.7
Windows 11 Pro

操作方法
1.ライブラリmysql-connector-pythonインストール
pip install mysql-connector-python

2.テーブルを作成する

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
CREATE TABLE `usertbl` (
`uid` int NOT NULL AUTO_INCREMENT,
`name` varchar(20) COLLATE utf8mb4_general_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci
CREATE TABLE `usertbl` ( `uid` int NOT NULL AUTO_INCREMENT, `name` varchar(20) COLLATE utf8mb4_general_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci
CREATE TABLE `usertbl` (
  `uid` int NOT NULL AUTO_INCREMENT,
  `name` varchar(20) COLLATE utf8mb4_general_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci

3.executemany関数を使って複数件を挿入します。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
import mysql.connector
# 接続情報を記述
conn = mysql.connector.connect(
host="localhost", port="3306", user="root", password="pwd12345"
)
# 接続状況確認
if conn.is_connected():
try:
# 再接続
conn.ping(reconnect=True)
# autocommit禁止
conn.autocommit = False
# カーソル作成
cr = conn.cursor()
# DB選択
cr.execute("use cft;")
# クエリを作成
sql = ("""
INSERT INTO foo
(name)
VALUES
(%s)
""")
data = [
('tokyo',),
('oosaka',),
('fukuoka',)
]
# insertを実行
cr.executemany(sql, data)
# コミットする
conn.commit()
# 実行結果
print(f"{cr.rowcount} 件追加しました。")
except mysql.connector.Error as e:
# ロールバック
conn.rollback()
print(e)
finally:
# クローズ
cr.close()
conn.close()
else:
exit()
import mysql.connector # 接続情報を記述 conn = mysql.connector.connect( host="localhost", port="3306", user="root", password="pwd12345" ) # 接続状況確認 if conn.is_connected(): try: # 再接続 conn.ping(reconnect=True) # autocommit禁止 conn.autocommit = False # カーソル作成 cr = conn.cursor() # DB選択 cr.execute("use cft;") # クエリを作成 sql = (""" INSERT INTO foo (name) VALUES (%s) """) data = [ ('tokyo',), ('oosaka',), ('fukuoka',) ] # insertを実行 cr.executemany(sql, data) # コミットする conn.commit() # 実行結果 print(f"{cr.rowcount} 件追加しました。") except mysql.connector.Error as e: # ロールバック conn.rollback() print(e) finally: # クローズ cr.close() conn.close() else: exit()
import mysql.connector

# 接続情報を記述
conn = mysql.connector.connect(
    host="localhost", port="3306", user="root", password="pwd12345"
)

# 接続状況確認
if conn.is_connected():
    try:
        # 再接続
        conn.ping(reconnect=True)
        
        # autocommit禁止
        conn.autocommit = False

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

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

        # クエリを作成
        sql = ("""
        INSERT INTO foo 
            (name)
        VALUES 
            (%s)
        """)

        data = [
            ('tokyo',),
            ('oosaka',),
            ('fukuoka',)
        ]
        
        # insertを実行
        cr.executemany(sql, data)
        
        # コミットする
        conn.commit()
        
        # 実行結果
        print(f"{cr.rowcount} 件追加しました。")
        
    except mysql.connector.Error as e:
        # ロールバック
        conn.rollback()
        print(e)
        
    finally:
        # クローズ
        cr.close()
        conn.close()
else:

    exit()

 

IT

Posted by arkgame