50歳から自分の好きな職業に簡単に転職できるの? ここは「がっちゃん 」が実際に体験した転職への道を記録するブログである

PythonでSQLiteを使ってDB操作をする

どうも! 職業訓練生のがっちゃんです!

 50歳にして長期人材育成「情報セキュリティ管理者資格」2年コースを絶賛受講中です!

 今回は、授業で習った「Python3系」プログラミングでSQLiteを使ってデータベースの操作について書いていきたいと思います。

「SQLite」基本情報

■概要

 SQLite(エスキューライト)とは、軽量コンパクトなリレーショナルデータベースシステムです。主に「組み込み用途」や「小規模システムのデータストア」として利用されています。

■基本説明

 SQLiteは「小型」「高速」「自己完結型」「高信頼性」「高機能」のSQLデータベースエンジンを実装するC言語ライブラリです。

 SQLiteはコードフットプリントが小さく、「メモリ」「ディスクスペース」「ディスク帯域幅」を効率的に使用でき、データベース管理者によるメンテナンスを必要としません。

 単独アプリケーションとして動作でき、インストールも簡単で非常にコンパクトであるため、アプリケーションやデバイスでローカルデータストレージとして活用されています。

 SQLiteは多くのスマートフォンやコンピュータに組み込まれており、無数のアプリケーションにバンドルされているため、「世界で最も使われているデータベースエンジン」と言われています。

 データベースを使うと、大量の顧客情報や商品情報などを効率よく管理することができます。大量にあるデータに対し、「この商品を購入した都内在住の顧客データだけ取得」といった処理を簡単に行うことができます。

このように便利なデータベースシステムとPythonとを合わせることにより、GoogleChromeやヘルプデスク支援システムなど本格的なアプリ作成が可能となります。今回は小規模データ向けのデータベースシステム「SQLite」とPythonを使ってデータベース操作の基本を学びます。

 プログラミングで使用しているソフトは「Pycharm Community」を使っています。インストール、使い方については以下のブログをご参考にしていただければと思います。

SQLite操作に必要な環境設定から

 まずは新規プロジェクトの作成から。今回は以下のような環境設定で進めました。プロジェクト名は好きな名称で結構ですが、ここでは「sqlite」プロジェクトとしました。この辺りの設定で困った方は、「PythonでExcelデータを操作する」ブログをご覧ください。

 今回は「SQLite」操作のために必要なパッケージをインストールするとか、ややこしい工程はありません。プログラムでimport文を書くだけでOKです。

DBとテーブルの作成

さっそく「create.py」プログラムを書いていきましょう。「example」というデータベースを作成し、その中にtestテーブルを作成します。プログラム作成中に、データベースで使用する構文が出てきます。この辺り、多少の知識が必要になると思いますので、「データベースのコマンドなんて知らないよ」という方は速修マスターとして「授業でお世話になったMySQLコマンドリスト」ブログをざっと見ていただければ参考になるかと思います。

 実行したら、以下のように「example.sqlite」というファイルが出来上がっています。このファイル、直接見に行っても、なんか文字化けしています。これでも大丈夫です。データベースはうまく出来上がっています。

データベース内のデータの取り出し

全データ取得:fetchall()

 出来上がったtestテーブルをセレクト文を使って見ていきましょう。

 実行してみると、以下のようになります。マジか!?カラム名は出してくれないのね!?素のデータをそのまま取ってくる感じなんですね!?データベース操作してた時は親切にカラム名を出してくれたのにねぇ。その辺りは『O/Rマッパー』とかいうのが作用して丁寧に出してくれていたみたいです。

 カラム名出してくれないなら、加工してカラム名出すようにプリントしてあげれば分かりやすくなりますね。

1件だけ取得:fetchone()

 データベースから1件だけデータを取得する際に使用します。「cursor.fetchone()」を増やすたびに2件、3件とデータを取得してくれます。

 実行結果は以下のとおりです。いろいろなセレクト文を自分で考えて実行すると理解がとても進みますよ。

練習問題:いろいろなセレクト文を試してみよう

 オープンソースの英和辞書「ejdic-hand」を利用して、いろいろなセレクト文を試してみよう。以下サイトの「辞書データベース形式(SQLite)のダウンロード」からダウンロードできます。解凍すると「ejdict.sqlite3」というデータベースファイルがあるので、このファイルを同じプロジェクト直下に貼り付けましょう。

 Pythonプログラムの設定やセレクト文の使い方は以下の「select3.py」プログラムを参考にしてみてください。私も適当にSQliteの公式サイトからセレクト文の書き方を参考にして作成したので、もっといいセレクト文があるはずです。

 皆さんもたくさんセレクト文を実行して、SQLiteとセレクト文の操作に慣れてくださいね。

データを更新する:update

 特定のデータを更新します。

 以下のように4番目の名前が「ダクネス」から「チョム助」に更新されていればOKです。

データを削除する:delete

 特定のデータを削除します。

 以下のように2番目のデータ「アクア」が削除されていればOKです。

練習問題

 Bottleフレームワークを使ってWeb入力フォームを作成、SQLiteにデータを格納するシステムを作成しましょう。

 先日の「Pythonで Excel操作する」ブログで作成した「書籍登録システム」を改良していき、完成度を高めていく寸法です。今回も新たな「books_bottle」プロジェクトを作成し、進めていくことにします。

 ターミナル画面でまずは「bottleフレームワーク」をインストールします。コマンドは以下のとおりです。

# conda install -c conda-forge bottle

 これでダメなら # pip install bottle ですね。

 これでもダメなら私のように、今回のプロジェクト直下に「bottle.py」を作成し、そこに以下からコピーした「bottle.py」のソースを貼り付けてください。

 次に以下の画像のように「books_bottle」プロジェクト直下に「views」フォルダを作成、その中に「index.html」と「form.html」ファイルを作成。プロジェクト直下に「app.py」「sqlite.py」を作成してください。

 私の場合、前回同様、「bottleフレームワーク」がインストールできなかったので、またもや「bottle.py」を作成しました。

※注意!:Pythonプログラムで、よくモジュールのインポートを行いますが、モジュールと同じ名前のファイルを作成すると、Pythonさんはモジュールと同じ名前のファイルを読み込みに行こうとします。

 私はこれを知らず、モジュールと同じファイル名を作成してしまい、import文で呼び出しても「そんなモジュールありませんわ!」と何度もPythonさんに怒られてしまい、途方に暮れたことがあります。皆さんはどうかお気をつけてください。

 以下、作成したファイルになります。まずは「sqlite.py」を実行して「books.sqlite」というデータベースと「books」テーブルを作成しておかないと、「app.py」実行時に「get_all()関数」のfetchall()とメソッドのところでエラーが出ちゃいますのでご注意を!

 出来上がったプログラムを「sqlite.py」「app.py」の順に実行してください。「app.py」を実行したときに出力されるURLをクリックすれば、Web上で書籍一覧や書籍入力フォームが出来上がっているのが確認できるはずです。実際に入力フォームから書籍を登録し、書籍一覧が増えていれば、SQLiteにも反映されている証拠です。

まとめ

 いかがでしたでしょうか?私的には前回のPythonでExcel操作をする方よりも、今回のデータベース操作の方が、プログラミング的に分かりやすいな、と感じました。MySQLの授業でデータベース操作のことを学んでいるという下地があるからかも知れませんがねぇ。

 いやぁ、これくらいのプログラミングが基本情報処理技術者試験のPythonプログラミング言語の試験内容だったら、楽勝だわなぁ。だから絶対もっと難しいの、出るんだろうなぁ。試験までもう少しあるから、気合入れてPythonの勉強してみますかねぇ。

それでは本日も最後までお付き合いいただき、ありがとうございました!

スポンサーリンク
最新情報をチェックしよう!