python mysqlでinsert文を実行する
pythonで、mysqlでinsert文を実行するサンプルコードを記述してます。pythonのバージョンは3.9.7を使用してます。
環境
- OS windows 11 Home
- python 3.9.7
mysql-connector-pythonインストール
ライブラリ「mysql-connector-python」を使用するのでインストールしてない場合は、「pip」を使ってインストールしておきます。
pip install mysql-connector-python
サンプルコード
localhostにある「mysql」に接続して、以下の構成のテーブル「foo」にinsert文を実行してみます。
テーブル「foo」
CREATE TABLE `foo` (
`id` 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
insertを実行します。
import mysql.connector
# 接続情報を記述
conn = mysql.connector.connect(
host="localhost", port="3306", user="root", password="password"
)
# 接続状況確認
if conn.is_connected():
try:
# 再接続を行うように設定
conn.ping(reconnect=True)
# autocommit禁止
conn.autocommit = False
# カーソル作成
cr = conn.cursor()
# DB選択
cr.execute("use hoge;")
# insertを実行
cr.execute("INSERT INTO foo (name) VALUES ('name1')")
cr.execute("INSERT INTO foo (name) VALUES (%s)", ('nama2',))
# コミットする
conn.commit()
except mysql.connector.Error as e:
# ロールバック
conn.rollback()
print(e)
finally:
# クローズ
cr.close()
conn.close()
else:
exit()
実行結果を見ると、データがinsertされていることが確認できます。
executemany
一度に複数件、挿入したい場合は「executemany」を使用します。
import mysql.connector
# 接続情報を記述
conn = mysql.connector.connect(
host="localhost", port="3306", user="root", password="password"
)
# 接続状況確認
if conn.is_connected():
try:
# 再接続を行うように設定
conn.ping(reconnect=True)
# autocommit禁止
conn.autocommit = False
# カーソル作成
cr = conn.cursor()
# DB選択
cr.execute("use hoge;")
# クエリを作成
sql = ("""
INSERT INTO foo
(name)
VALUES
(%s)
""")
data = [
('name1',),
('name2',),
('name3',)
]
# 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()
実行結果
-
前の記事
Linux 1つの目のコマンドが失敗した場合のみ実行する 2022.07.22
-
次の記事
VSCODE ペットを表示する 2022.07.22
コメントを書く