【スポンサーリンク】
コミットする方法
通常、SQL命令文を実行後は、commitメソッドで実際にデータベースへの変更を行う必要がある。コミットの処理には時間がかかるため、1度に大量の処理を実施する際はSQL命令文だけ先に全て実行し、その後コミットを行うことで処理時間を短縮することができる。
import sqlite3 #データベース読み込み db = sqlite3.connect("test.db") #フィールド作成用SQL文 sql = """ CREATE TABLE Fruit ( id INTEGER PRIMARY KEY, name VARCHAR(20), price INTEGER ); """ db.execute(sql) #sql文を実行 #登録データ r = [(1, "banana", 130), (2, "apple", 100), (3, "orange", 198)] #レコード一括登録登録用SQL文 sql = """ INSERT INTO Fruit VALUES ( ?, ?, ? ) """ db.executemany(sql, r) #sql文を実行 db.commit() #コミット db.close() #データベースを閉じる
executeメソッドとexecutemanyメソッド実行時にはデータベースの変更は実行されておらず、commitメソッド実行時に変更が反映される。
自動コミットモードの設定方法
データベース生成時にオプションでisolation_level=None
を設定することで、自動コミットモードに設定することができる。SQL命令文実行後すぐにコミットが自動的に実行されるため、commitメソッドが不要になる。
import sqlite3 #データベース読み込み db = sqlite3.connect( "test.db", isolation_level=None, ) #フィールド作成用SQL文 sql = """ CREATE TABLE Fruit ( id INTEGER PRIMARY KEY, name VARCHAR(20), price INTEGER ); """ db.execute(sql) #sql文を実行 #登録データ r = [(1, "banana", 130), (2, "apple", 100), (3, "orange", 198)] #レコード一括登録登録用SQL文 sql = """ INSERT INTO Fruit VALUES ( ?, ?, ? ) """ db.executemany(sql, r) #sql文を実行 db.close() #データベースを閉じる
この例では、executeメソッドやexecutemanyメソッド実行時に一緒にコミットされる。
【スポンサーリンク】