Python PR

【Python】sqlite3でデータベースを使う方法

記事内に商品プロモーションを含む場合があります

この記事では、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オブジェクト が必須なので変数に代入しておきます。

データベース名に :memory: を指定するとインメモリでデータベースを作成できます。

カーソルの生成

先ほどの Connectionオブジェクト からカーソルを生成します。

cur = con.cursor()

SQLコマンドを実行する

カーソルから execute()メソッド を呼び出して SQLコマンドを実行できます。基本的にこのメソッドを用いてデータベースを操作していきます。

cur.execute('SQLコマンド')

SQLコマンドを実行することでテーブルを作成したりデータを取得したりできます。

SQLite3 – 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 – SQLコマンドの使い方

まとめ

この記事では、SQLite3 を使ってデータベースを扱う方法を解説しました。

Python では、ライブラリが用意されているので簡単に使うことができました。しかし、データベースの操作には SQL を用いるので苦手な方は勉強しておきましょう!

外部リンクSQL 入門 - オラクル・Oracle SQL 入門

それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ

参考sqlite3 --- SQLite データベースに対する DB-API 2.0 インターフェース — Python ドキュメント