※記事内に商品プロモーションを含むことがあります。
はじめに
Pythonのsqlite3ライブラリを使ってSQLiteを扱う方法をまとめました。
SQLiteはリレーショナルデータベース管理システム (RDBMS, relational database management system) の1つです。SQLiteではデータベースを1つのファイルに格納します(別のRDBMSであるMySQLなどではサーバを立ち上げる必要があります)。
Pythonでは標準ライブラリsqlite3でSQLiteを扱えます。
環境
検証した環境は以下の通りです。また、OSはWindows 10 Home Ver. 21H1を使用しています。
ソフトウェア | バージョン |
---|---|
Python | 3.9.7 |
sqlite | 3.36.0 |
用語
リレーショナルデータベースで使用される用語です。
- テーブル:表
- カラム:列
- レコード:行
データベースの作成とデータの追加
PythonによるSQLite操作の一連の流れを示します。まず、SQLiteのデータベースファイルを作成するには、以下のPythonコマンドを実行します。
|
|
ここでは、データベースファイルの名前をexample.db
としています。実行すると、カレントディレクトリにexample.db
という空のファイルが作成されます。既にexample.db
がある場合は開きます。
続いてデータベースにテーブルを作成し、レコードを追加します。
|
|
conn.cursor()
でカーソルオブジェクトを作成し、cur.execute
でSQLを使ってデータベースにアクセスします。
データは顧客情報を例としました。customer
という名前のテーブルを作り、カラムはID, 顧客名、電話番号としています。表にすると以下のイメージです。
ID | 顧客名 | 電話番号 |
---|---|---|
0 | Alice | 090-0000-0000 |
customer(id INTEGER, name STRING, telephone STRING)
は
<テーブル名>(<列名> [型] ,...)
という意味です(型の指定は任意です)。
conn.commit()
でデータベースに変更を反映させます。最後にconn.close()
を実行してデータベースとの接続を切る必要があります(排他制御が実施されているため、接続を切らないと、他のプログラムやユーザがデータベースにアクセスできなくなる)。
テーブル名の一覧
テーブル名の一覧を取得するには以下を実行します。
|
|
実行結果
|
|
sqlite_master
はテーブル名などのメタ情報を格納した特別なテーブルで、データベースファイルに1個だけ作成されます。また、cur.fetchall()
はクエリの結果を1件ずつ返す(フェッチ)メソッドです。
テーブル内の全データ取得
customer
テーブル内の全データを取得するには以下を実行します。
|
|
実行結果
|
|
レコードの更新・削除
レコード単位でデータを更新する場合、UPDATE
文を使います。WHERE
句で更新するレコードを指定します。
|
|
レコードを削除する場合、DELETE
文を使います。
|
|
UPDATE
文、DELETE
文のどちらも、データベースに変更を保存する場合はconn.commit()
を実行します。
テーブルの削除
テーブルを削除する場合、DROP
文を使います。
|
|