見出し画像

[Python]データの挿入をまとめて実行する

1.何をするのか

前回のテーブルへのデータの挿入はSQL文に事前に挿入する値を指定して実行していました。ここで、挿入する値が複数ある場合それに応じたSQLを都度書かなくてはならない為面倒です。なので、今回はデータの挿入をまとめて実行できるようにします。これを実行する為にzip関数とexecutemany()の2つの関数を使用します。

2.コード

import sqlite3
import os

PATH = os.path.join(os.getcwd(), "hoge.db")
connect = sqlite3.connect(PATH)
cursor = connect.cursor()
"""
SQLのVALUESの()に挿入するデータを作成するのにzip関数を使う。
(例)
fruit = ["apple", "banana", "orange"]
price = [100, 150, 200]
zipped_fruit_price = zip(fruit, price)
list_fruit_price = list(zipped_fruit_price)
#実行結果#
[('apple', 100), ('banana', 150), ('orange', 200)]
"""
author_list = ["渋沢栄一", "甘利俊一", "吉田松陰"]
book_list = ["論語と算盤", "脳・心・人工知能", "留魂録"]
zipped_author_book = zip(author_list, book_list)
list_author_book = list(zipped_author_book)
"""データを追加するSQL
?にはzip()で作成したデータが代入されます。
後に、SQLを実行するexecutemanyの第二引数にこれを指定します。
"""
add_data_sql = "INSERT INTO book_list VALUES(null, ?, ?)"

#SQLを実行
cursor.executemany(add_data_sql, list_author_book)
#変更の反映を行う
connect.commit()
#データベースを閉じる
connect.close()

3.実行結果

対話モードに入り確認してみます。

sqlite> SELECT * FROM book_list;
1|結城浩|数学ガールの秘密ノート
2|渋沢栄一|論語と算盤
3|甘利俊一|脳・心・人工知能
4|吉田松陰|留魂録 <= 追加されている
sqlite> SELECT * FROM book_list WHERE id=2; <=idが2のデータを抽出する
2|渋沢栄一|論語と算盤 

4.参考文献

Python公式document<sqlite3に関して>
Python公式document<zip関数に関して>


この記事が気に入ったらサポートをしてみませんか?