• Skip to main content
  • Skip to primary sidebar
  • ホーム
  • お問い合わせ

ハイパー仕事し隊

思い立った吉日!イロイロ試してオンリーワンの起業家を目指してます!

現在の場所:ホーム / ウェブアプリ関連 / Python からデータベース (SQLite) を操作する方法

Python からデータベース (SQLite) を操作する方法

2018年5月15日

Python SQLite

データベースって難しそう。。。

そう思っていてなかなか手を出せずにいたのですが、意外にも簡単でした。笑
ちゃんと言うと「Excel のようにデータを保存するだけの存在」と割り切れば、簡単に扱えます。

過去の自分と同じように “データベース” という言葉ですぐに “コワイ!!” 思っている方に、ぜひその簡単さ共有したいと思います。。

いくつかデータベースありますが、その中でも SQLite は軽量で 1 データベース 1 ファイルとして生成されますので、大変扱いやすいデータベースです (拡張子はなんでもいいので、本記事では *.sqlite としてます)。また MySQL などのデータベースと違って常駐プロセスがないのも特徴の 1 つです。

なので、とてもとっつきやすいデータベースです。

それでは、実際に見ていきましょ!

環境構築

こちらが実際に利用した環境になります。

動作環境

  • OS: Windows 10 x64
  • Python: 3.6.5

あった方が良い知識

  • SQL 文

データベースにアクセスするには SQL 文の知識が必要です。

本記事では簡単なデータベース操作しかしていませんので、そのまま読み進めても問題ありません。「こんな風にするのね」という感じでわかると思います。

任意: SQLite のインストール方法

Python には標準で sqlite3 モジュールがついていますので、Python を通して SQLite データベースの作成・閲覧・更新・削除ができます。

ただ、Python 使わずにコマンドプロンプトからアクセスするには、SQLite モジュールをダウンロード & インストールする必要があります。いちいち Python コードを書いて内容を確認したくないという場合にオススメです。

Windows の場合

  1. 本家サイトダウンロードページ からモジュール取得
    • “Precompiled Binaries for Windows” から “sqlite-tools-*” をダウンロード
  2. ダウンロードした ZIP を解凍する
    • SHA1 でハッシュ値を取得し、改ざんされていないか確認しましょう。
    • Windows の場合、PowerShell から “Get-FileHash -Algorithm SHA1 <ファイル名>” で確認できます。
  3. 解凍後、任意の場所に移動しパスを通す
    • 私は “C:\SQLite” 配下に EXE を移動させ、環境変数に “C:\SQLite” を追加 (= パスを通す) しました。

Mac OS の場合

  1. インストール Homebrew
    • HP にも書かれていますが /usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)” を実行
    • Mac へのログインパスワードをタイプしてインストール
  2. ターミナルから “brew install sqlite3” をタイプし、SQLite 3 をインストール

データベースへの接続、内容確認

簡単ではありますが、こちらがインストールした SQLite からデータベースの中身を確認する方法です。

  • コマンドプロンプト/ターミナルから sqlite3 database_name.sqlite で指定したデータベースに入ります。
  • .table を実行することで、作成されたテーブルのリストが表示されます。
  • SELECT * FROM table_name; という SQL 文でテーブルの中身が見れます。(SQL 分の最後に セミコロン “;” を忘れずに!! )
  • .quit を実行することで、コマンドプロンプトに戻れます。

次章から、実際にデータベースを生成していきますので、その際にお試し下さい。

早速 SQLite を使ってみる

それでは、実際にデータベースを作成、コントロールしましょ!

空のデータベース作成

データベースの作成方法は 2 種類あります。

  • ファイルを生成する方法 conn = sqlite3.connect('database_name.sqlite')
  • メモリ上に生成する方法 conn = sqlite3.connect(':memory:')
#lesson.py
import sqlite3

# conn = sqlite3.connect('database_name.sqlite') or 
conn = sqlite3.connect(':memory:')
conn.close()

ファイル生成を選択した場合、”database_name.sqlite” という名前のファイルが生成され、Python 処理が終了してもデータがそのファイルに残っていますので、後日そのデータベースを利用した処理が可能です。バックアップもこのファイルをどこかにコピペするだけで OK です。
ちなみにですが、拡張子はあってもなくても良いのですが、慣習的に DB が何か分かるように “.sqlite” を付けます。

メモリ上の生成を選択した場合、Python 処理が終了するとそのデータベースも消えますので、今回のような練習用に向いています。

テーブルを作成、更新、削除、一覧表示

基本的には下記に集約されます。

    • conn = sqlite3.connect(''database_name.sqlite'') で指定したデータベースにアクセスします。なければ、新規に生成します。
    • curs = conn.cursor() でデータベース操作ができるようにします。
    • curs.execute("SQL 文") で SQL を実行します。
    • conn.commit() 実行した SQL は Commite しなければ、保存されません。
    • curs.close()

処理が終われば、処理操作をクローズ。

    • conn.close()

データベースもクローズする。

curs.execute("SQL 文") 以外で、SQL 分を実行しテーブルを作成、更新、削除、一覧表示させているだけですので、色々な SQL 文をお試し下さい。

以下が、”persons” テーブルを作成し、各種 “name” を作成、変更・更新、削除しているコードになります。

import sqlite3

# Create database in memory
conn = sqlite3.connect(':memory:')

curs = conn.cursor()

# Create a table
curs.execute("CREATE TABLE persons(id INTEGER PRIMARY KEY AUTOINCREMENT, name STRING)")

# Insert a row of data
curs.execute("INSERT INTO persons(name) values('Mike')")
curs.execute("INSERT INTO persons(name) values('John')")
curs.execute("INSERT INTO persons(name) values('Will')")

# Update data
curs.execute("UPDATE persons SET name = 'Michael' WHERE name = 'Mike'")

# Delete data
curs.execute("DELETE FROM persons WHERE name = 'Michael'")

# Save (commit) the changes
conn.commit()

# Browse inserted data
curs.execute("SELECT * FROM persons")
print(curs.fetchall())

curs.close()
conn.close()

上記コードを実際に書いたり、コピペして編集したりするとより知識が深まります。

ぜひお試しください。

まとめ

いかがでしたでしょうか?

データベースと聞いて、サーバーを立ててどうのこうのと大変なイメージがあったのですが、意外とあっさりしていて驚きました。

一先ずデータベースの使い方はわかりましたので、次は SQLAlchemy というサードパーティのツールを使って、データベースに依存しないコードが書いたり、ウェブフォームに入力された情報をデータベースをに登録するなどを試したいと思います。

それでは、また!

カテゴリー: ウェブアプリ関連
タグ: python, sqlite

最初のサイドバー

簡単な自己紹介

ごく普通の 30 代サラリーマンです。世界を旅しながらの生活が目標!!
IT 全般に興味あり: Python (Flask, Django) / PHP (Laravel, Wordpress) / Golang / AWS / Network Security.
Read More…

サイト内検索

最近の投稿

  • 【VS Code プラグイン】Postman より便利!? Rest Client をオススメする理由
  • MySQL と phpMyAdmin を Docker Compose で作って、Python から接続する
  • Windows10 上の Ubuntu から “curl localhost” を実行すると “Connection refused” になる原因
  • リダイレクトの仕組み知ってる?Flask で調べるてみるのだ。
  • Apple 独自の 検索エンジンで何が変わるのか

アーカイブ

  • 2021年3月
  • 2021年1月
  • 2020年10月
  • 2019年3月
  • 2018年11月
  • 2018年10月
  • 2018年9月
  • 2018年8月
  • 2018年7月
  • 2018年5月
  • 2018年4月

タグ

amazon cloudfront amazon s3 aws coursera css django docker flask fullstack gcp github hawaii life in USA linux mongodb mysql postgresql pwa python sqlite vagrant

Contact
Privacy Policy and Term of Use
Copyright © 2025 · All rights reserved.