この記事では、Pythonで SQLite3 を使ってデータベースを扱う方法を解説します。
SQLite3 とは、サーバではなくディスク上にデータを保存するデータベースです。
Pythonで SQLite3 を使うには、sqlite3モジュール で簡単に扱うことができます。ちなみに、sqlite3モジュール は、標準ライブラリです。
それでは、sqlite3モジュールでデータベースを扱う方法を見ていきましょう!
SQLite3とは?
SQLite3 とは、サーバではなくディスク上(単一のファイル)にデータを保存するデータベース(RDB) です。非常に軽量かつ高速なので大量のデータを扱うのに向いています。
ディスク上にデータベースを作成するので新たにサーバープロセスを用意する必要がなく、保存されたデータは永続的で次回セッション時も呼び出すことができます。
また、インメモリで実行することもできます。
操作は データベース言語(SQL) を用いて行うので SQL やリレーショナルデータベースで使用される用語を少しだけおさらいしておきましょう。
| オブジェクト | データベースの中の物のこと。テーブルやインデックスなど。 |
|---|---|
| テーブル | Excelのシートのようなもの。1つのデータベースに複数のテーブルを作成可能。 |
| カラム | テーブルの列のこと。 |
| レコード | テーブルの行のこと。 |
| フィールド | レコードの1つの要素のこと。 |
| トランザクション | 作業の発生から確定までの1つの作業の単位。 |
SQLite3の使用手順
まずは、Python で SQLite3 を使用する大まかな流れを見て、全体像をなんとなく把握しておきましょう。
sqlite3のインポート
最初に sqlite3モジュール をインポートしましょう。標準ライブラリなのでインポートするだけで使用可能です。
import sqlite3
データベースの作成・接続
データベースに接続するには sqlite3.connect()関数 の引数に任意のデータベース名を指定して実行します。指定されたデータベースが存在しない場合、新たにその名前のデータベースが作成されます。
con = sqlite3.connect('データベース名')
返り値には、作成、または接続したデータベースを表す Connectionオブジェクト が返されます。sqlite3モジュール を扱うには Connectionオブジェクト が必須なので変数に代入しておきます。
カーソルの生成
先ほどの Connectionオブジェクト からカーソルを生成します。
cur = con.cursor()
SQLコマンドを実行する
カーソルから execute()メソッド を呼び出して SQLコマンドを実行できます。基本的にこのメソッドを用いてデータベースを操作していきます。
cur.execute('SQLコマンド')
SQLコマンドを実行することでテーブルを作成したりデータを取得したりできます。
変更の保存
SQLコマンドで変更したデータベースを保存するには Connectionオブジェクト から commit()メソッド を実行します。
con.commit()
データを取得した時などデータベースに変更を加えていない場合は呼び出す必要はありません。また、いくつもの処理をまとめてコミットすることも可能です。
データベースを閉じる
使い終わったら最後にデータベースを閉じます。Connectionオブジェクト から close()メソッド を呼び出しましょう!
con.close()
以上が Python で SQLite を使用する大まかな手順となります。
実際にSQLite3でデータベースを使ってみよう
手順を見ただけでは分かりづらいと思うので 実際に SQLite3 を使って簡単なデータベースを作成するサンプルコードを見て理解を深めましょう。
以下のソースコードでは、作成したデータベースに新たにテーブルを作成し、データを挿入・取得しています。
import sqlite3 # データベース作成・接続 con = sqlite3.connect('database.db') # カーソルの生成 cur = con.cursor() # execute() を用いたデータベース操作 # personテーブルの作成 cur.execute('CREATE TABLE IF NOT EXISTS person (id int, name str, age int)') # データの挿入 cur.execute('INSERT INTO person VALUES(1, "田中", 20)') cur.execute('INSERT INTO person VALUES(2, "今井", 32)') cur.execute('INSERT INTO person VALUES(3, "山本", 18)') # 変更の保存 con.commit() # nameカラムの取得 cur.execute('SELECT name FROM person') # 取得したデータをリストとして出力 print(list(cur)) # 接続を閉じる con.close()
実行結果
[('田中',), ('今井',), ('山本',)]
SQLite3 を使って簡単なデータベースを扱うことができました。
使用しているSQLコマンドについては以下の記事を参照してください。
まとめ
この記事では、SQLite3 を使ってデータベースを扱う方法を解説しました。
Python では、ライブラリが用意されているので簡単に使うことができました。しかし、データベースの操作には SQL を用いるので苦手な方は勉強しておきましょう!
外部リンクSQL 入門 - オラクル・Oracle SQL 入門
それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ
参考sqlite3 --- SQLite データベースに対する DB-API 2.0 インターフェース — Python ドキュメント


