「SQLやデータベースについて学べと言われたけど、何から始めて良いか解らない。」
「データベースに挑戦しようとしているけど、データベースも色々あって独学では大変そう。」
と感じている方向けに SQLite の使用方法を紹介します。
本記事を読むと5分で RDB(関係データベース) を始められます。
サンプルコードを使用して SQLite の使用方法を紹介します。
目次
Colab のサンプルコードの全体概要を理解する
3つの目標
本記事で紹介するサンプルコードは、下記の3つを達成することを目指します
id(整数) | key(文字列) | val(文字列) |
1 | あ行 | あいうえお |
2 | か行 | かきくけこ |
3 | さ行 | さしすせそ |
4 | た行 | たちつてと |
サンプルコードの構造
今回紹介する処理は3つに分かれています。
- SQLiteを使用するクラスの定義
- 初期化に必要な情報:データベース名
- 出来ること:
データベースの作成、テーブル・インデックスの作成、
データの登録・更新・削除、データの取得
- Google ドライブのマウント ※Google ドライブにデータを格納します
- メイン処理 ※データ操作
- 初期化
- テーブルの作成
- データの登録(1レコード)
- データの取得(1レコード)
- データの登録(複数レコード)
- データの取得(件数指定)
Google Colaboratory で実際に動かす
用意した Colab を実行する場合
下記リンクより Colab を起動し、全てのセルを実行します。
Colab にてノートブックを作成する場合
1. SQLiteを使用するクラスの定義
Colabで新しいノートブックを作成する方法を参考にノートブックを開き「SQLiteを操作する用のクラスの定義」のセルをコピーします。
※コードが長くなるので本記事には全てのソースコードを記載しておりません。
2. Google ドライブのマウント
Colab にてコードセルを追加して、下記コードをコピーして実行します。
# Googleドライブのマウント
from google.colab import drive
drive.mount('/content/drive')
3. メイン処理を実行する
1. 初期化
Colabにてコードセルを追加して、下記コードをコピーして実行します。
test = Sqlite3Access("test")
test.db_name
Sqlite3Access の引数に指定した名称で Google ドライブ上の Colab が格納されているフォルダに SQLite のデータを蓄積するファイルを作成します。上記例の場合だと、「test.db」というファイルが作成されます。
すでに存在している場合は、test.dbへの接続を確立します。
2. テーブルの作成
データベース作成直後は、テーブル(データを登録する器)が無いのでテーブルを作成します。
データベースへのテーブルの作成にはcreate文を使用します。
Colabにてコードセルを追加して、下記コードをコピーして実行します。
# create文を作成
_sql = """\
CREATE TABLE testtable(id INTEGER PRIMARY KEY AUTOINCREMENT, key STRING, val STRING)
"""
# create文を実行
test.execute(_sql)
3. データの登録(1レコード)
テーブルにデータを登録します。
テーブルへのデータ登録にはinsert文を使用します。
Colabにてコードセルを追加して、下記コードをコピーして実行します。
# insert文を作成
_sql = """\
INSERT INTO testtable(key,val) values('あ行', 'あいうえお')
"""
test.execute(_sql)
4. データの取得
テーブルに登録されたデータを取得します。
テーブルからのデータの取得にはselect文を使用します。
Colabにてコードセルを追加して、下記コードをコピーして実行します。
# select文を作成
_sql = """\
select *
from testtable
"""
test.printSelect(_sql)
5. データの登録(複数レコード)
次に、複数レコードを同時に登録します。
Colabにてコードセルを追加して、下記コードをコピーして実行します。
# insert文を使用して複数レコードを同時に登録する
inserts = []
inserts.append(("か行","かきくけこ"))
inserts.append(("さ行","さしすせそ"))
inserts.append(("た行","たちつてと"))
test.executemany(inserts, 'INSERT INTO testtable(key,val) values(?, ?)')
6. データの取得(件数指定)
テーブルに登録されたデータを取得します。 今回は取得する件数を指定します。
これは、テーブルに何百万レコード登録されている場合などに使用します。
取得するレコード件数を指定する場合、SQLiteではlimitを追加します。
Colabにてコードセルを追加して、下記コードをコピーして実行します。
# select文を作成、先頭3レコードのみを取得
_sql = """\
select *
from testtable
-- 先頭3レコードのみを取得
limit 3
"""
test.printSelect(_sql)
まとめ
本記事では、下記を中心に Colab で SQLite を使用する方法を紹介しました。
- データベースを新規に作成する
- データベース上にテーブルを作成する
- データを登録したり登録したデータを取り出したりする
次のステップとして下記をおすすめします
例)スクレイピングした結果や Excel から取得したデータや CSV から取得したデータをDBに格納する
例)インポートして再利用出来るようにオリジナルのモジュールを作成する
ご参考になりましたら twitter をフォローして SNS でシェアして頂ければ幸いです。
【付録】データベースをさらに学びたい方へのおすすめ本
をおすすめします。
私自身は初めて手に取ったは10年以上前だったので初版でしたが、この本を読むことで、単なるテーブル操作だけでなく、システムとしてみたデータベースの奥の深さを学びました。
をおすすめします。
SQLの元になっている関係代数をイメージで表現していたり、正規化についても詳しく説明されており、リレーショナルデータベースについての必要な知識が一通り身に付けられるのでお勧めします。
是非、この本を読んで力試しをしてみてください。
データベーススペシャリストがおすすめです。
通常1からテーブル設計をする機会は中々恵まれないと思います。
午後Ⅰ・Ⅱの過去問を解いてみると実践に近いことができるので力が身につくと思います。
【付録】演習
理解を深めるためには、実際に動かしてみるのが一番です。
- データ量を(10件、1000件、10万件、1000万件)と変化させたときの、*.dbファイルの容量の推移
※Googleドライブの容量は無料だと最大15GBだけど、一体どれくらい登録出来るのだろうか? - テーブルに登録されているデータ量が(10件、1000件、10万件、1000万件)と変化させた場合の先頭10件のレコードを取得する速度の推移(idでの昇順・降順、keyでの昇順・降順、valでの昇順・降順)
※データ量や取得方法によって処理速度は変わるのだろうか? - keyにindexをはった場合にも1と2で同じことをやって、indexをはる前と後を比較
※indexってよく聞くけど、どれくらい効果があるのだろうか?どういったときに効果が顕著なのだろうか? - 先頭3件のvalカラムに格納されている文字列をカンマ区切りで結合して取得してみましょう
- 出力イメージ:”あいうえお,かきくけこ,さしすせそ”
ちなみに今回は下記 Chromebook を使用しました。
14.0型フルHD × Core i3 × メモリ8GB を満たす数少ない端末です。
軽くて持ち運びしやすく開発に耐えうるスペックなのでおすすめです。
価格:70,510円 |