この記事では、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 ドキュメント