PythonによるSQLiteの使い方【SQL/データベース入門】

PythonによるSQLiteの使い方【SQL/データベース入門】 プログラミング

この記事では、PythonからSQLiteへのアクセス方法を解説します。
数分でPythonからSQLiteへのアクセスができるようになります。

本記事の内容

  • PythonからSQLiteにアクセスするために必要なモノ
  • SQLite用サンプルデータの利用
  • PythonからSQLiteにアクセスする

それでは、上記に沿って解説していきます。

PythonからSQLiteにアクセスするために必要なモノ

Pythonの標準ライブラリを利用します。

標準ライブラリであるため、別途ライブラリをインストールする必要がありません。
それほど、PythonとSQLiteは一心同体と言うことなのでしょう。

用意する必要があるのは、SQLiteのデータベースだけと言えます。
もちろん、SQLiteをインストールしても構いません。

SQLiteのインストールについては、以下の記事を参考にしてください。

しかし、SQLiteのインストールは必須ではありません。
SQLiteのデータベースファイルがあれば、それでOKなのです。

上記で挙げた記事内でも、データベース・テーブル作成について説明しています。
その通りにすれば、SQLiteのデータベースファイルを作成できます。

でも、手間をかけない方法もあります。
つまりは、SQLiteのインストールが不要な方法です。

その方法を下記で説明します。

SQLite用サンプルデータの利用

SQLite Sample Database
https://www.sqlitetutorial.net/sqlite-sample-database/

上記URLにアクセスして、次の表示を探します。

「Download SQLite sample database」リンクをクリックすれば、ダウンロードが始まります。
ダウンロードしたファイルは、chinook.zipというファイル名です。

このzipファイルを解凍すれば、解凍先のフォルダに次のファイルを確認できます。

これが、SQLiteのデータベースファイルです。
テーブル構成は、次のようになります。

SQLiteのコマンドでテーブル一覧を表示した場合の結果です。

sqlite> .tables 
albums          employees       invoices        playlists 
artists         genres          media_types     tracks 
customers       invoice_items   playlist_track

このサンプルデータベースを用いて、以下の検証をしていきます。

PythonからSQLiteにアクセスする

まずは、データベースファイルを用意しておきます。
プログラムと同じ階層に、データベースファイルを設置します。

確認していくのは、以下の処理となります。

  • データ取得
  • データ登録
  • データ更新
  • データ削除

それぞれを以下で説明していきます。
その前に、対象となるテーブルの情報を確認しておきます。

media_typesテーブル

sqlite> .schema media_types  
CREATE TABLE IF NOT EXISTS "media_types"  
(  
    [MediaTypeId] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,  
    [Name] NVARCHAR(120)  
);

media_typesには、次の一覧が登録されています。

(1, 'MPEG audio file')  
(2, 'Protected AAC audio file')  
(3, 'Protected MPEG-4 video file')  
(4, 'Purchased AAC audio file')  

データ取得

media_typestテーブルからデータを取得するサンプルコードです。

import sqlite3 
# データベースファイルの指定
dbname = "chinook.db" 
# DB接続 
conn = sqlite3.connect(dbname) 
# カーソル作成 
cur = conn.cursor() 
# データ取得 
sql = "SELECT * FROM media_types" 
cur.execute(sql) 
# カーソルからデータを取り出す
for row in cur: 
    print(row) 
# DB切断 
conn.close()

内容は、コメントを見てください。
難しいところは、何もないと思います。

データ登録

media_typestテーブルにデータを登録するサンプルコードです。

import sqlite3 
# データベースファイルの指定 
dbname = "chinook.db" 
# DB接続 
conn = sqlite3.connect(dbname) 
# カーソル作成 
cur = conn.cursor()
# データ登録  
sql = "INSERT INTO media_types (Name) values('Waveform Audio File')" 
cur.execute(sql) 
# コミット 
conn.commit() 
# DB切断 
conn.close()

データ取得との大きな違いは、コミットです。
もちろん、カーソルからデータ抜き出す抜き出さないの違いはあります。

そうだとしても、簡単ですね。

では、上記を実行した結果を確認します。
確認には、データ取得のプログラムを利用しています。

(1, 'MPEG audio file')  
(2, 'Protected AAC audio file')  
(3, 'Protected MPEG-4 video file')  
(4, 'Purchased AAC audio file')  
(5, 'AAC audio file')  
(6, 'Waveform Audio File')

なお、media_typestは「AUTOINCREMENT」で自動採番となっています。

データ更新

データ登録のコードとほぼ同じです。
違いは、以下。

# データ更新 
sql = "UPDATE media_types SET Name = 'WAV' WHERE MediaTypeId = 6"

SQL文だけ変更しています。
これだけでデータ更新となります。

上記を実行した結果を確認します。

(1, 'MPEG audio file')  
(2, 'Protected AAC audio file')  
(3, 'Protected MPEG-4 video file')  
(4, 'Purchased AAC audio file')  
(5, 'AAC audio file')  
(6, 'WAV')

MediaTypeId=6が、「Waveform Audio File」から「WAV」に変更されています。

データ削除

データ登録のコードとほぼ同じです。
違いは、以下。

# データ削除 
sql = "DELETE FROM media_types WHERE MediaTypeId = 6" 

データ更新と同じく、SQL文だけ変更しています。
これだけでデータ削除となります。

上記を実行した結果を確認します。

(1, 'MPEG audio file')  
(2, 'Protected AAC audio file')  
(3, 'Protected MPEG-4 video file')  
(4, 'Purchased AAC audio file')  
(5, 'AAC audio file')

MediaTypeId=6のデータが削除されていることを確認できます。

まとめ

PythonからSQLiteへのアクセス方法を確認してきました。
データ取得、登録、更新、削除と一通りの確認です。

ほぼ同じコードで対応できました。
それも、読み込むモジュールが「sqlite3」のみというシンプルさです。

とりあえず、PythonからSQLiteへのアクセスの容易さがわかったと思います。
もっと複雑なことをしたい場合は、その都度検索する形で十分でしょう。

タイトルとURLをコピーしました