Categories: Python

【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 ドキュメント

ゆうまる

独学でプログラミングを勉強しているおじさん。いろんな言語を勉強したが浅く広くなためあまり仕事につながらない。また忘れっぽいため自分のブログを備忘録としても使っている。産まれてこのかたずっとネコを飼ってる生粋のネコ派。最近お腹が出てきて筋トレに奮闘中!

Recent Posts

【Dart】コンストラクタのデフォルト引数について

Dartのコンストラクタのデフォルト引数…

2週間 ago

【Unity】有料アセットを無料で手に入れる方法

この記事では、Unityの有料アセットを…

4か月 ago

【Python】任意の秒数だけ処理を一時停止する方法【sleep()関数】

この記事では、Pythonで任意の秒数だ…

1年 ago

【Python】Wordの文書の新規作成と読み書き

この記事では、Pythonを使ってWor…

1年 ago

【Python】メタクラスって結局なんなの?

この記事では、Pythonのメタクラスに…

1年 ago