スポンサーリンク

Pythonでデータベース(DB)を作成・操作できる「sqlite3」の使い方を分かりやすく解説する

Pythonからデータベースを操作する

今回はPythonのプログラム上からデータベース(DB)を操作する方法を解説していきます。基本的にデータベースは他のプログラミング言語の上からデータベースにアクセスするのが一般的です。データベースを操作するプログラミング言語であるSOLの基本的な使い方は↓で書いています。

→SQLの基本的な構文

例えば自分の場合だと仮想通貨の価格を定期的に取得したそれをデータベースに保存するという処理をするためにPythonのプログラム上でデータベースを操作しています。

他にもDjangoやFlaskなどでウェブアプリケーションを構築する際にもデータベースは必須になるので、Pythonに限らず他のプログラミング言語でWebアプリケーションなどを作る場合でもSQLによるデータベースの操作スキルは必須なので、データベース(DB)の理解はエンジニアになる上で絶対に必要です。

データベースを操作するプログラミング言語はいくつか存在しますが、基本的に「SQL」・「Oracle」というプログラミング言語で操作します。そしてPythonなどの他のプログラミング言語で書かれたコードからデータベース(DB)を操作する場合は、そのコード上でSQLのコマンドを記述し、そこからデータベース(DB)を操作するのが一般的です。

そして、Pythonの場合であればSQLの簡易版であるsqliteをPython上から実行できるsqlite3というライブラリを使うことで。python上でデータベースを操作することができます。

SQLite(エスキューライト)は、ファイルベースのデータベースエンジンでファイルだけあれば動作しますが、データベースを丸ごとロックすることしかできないので、複数人が同時接続するとパフォーマンスが落ちてしまいます。加えて発行できるSQLも他のデータベースエンジンに比べて制限があり、複雑だったり大規模なデータベースが必要な場合なケースには向いていないわけですが、SQLはインストール不要ですぐに使えるというメリットはあるので、小さなwebサービスを立ち上げる際なんかはサクッと使えるので超便利です

sqliteでPythonからデータベースを操作する

まずはコマンドライン(アナコンダプロンプト)でsqliteをインストールします。Anaconda環境だとデフォルトで入っているかもしれませんので、まず「JupyterNotebook」かなんかで「import sqlite」を実行して確認してみてください。

#sqliteのインストール
$pip install sqlite

インストールが終わったらインポートしてみます。

##sqlite3をインポートする
import sqlite

データベースに接続して.dbファイルとデータテーブルの作成する

基本的にデータベース(DB)の仕組みはまず大元の.dbを作り、その中にデータの種類ごとにテーブルを作成し、そこにデータを格納していくという形になるので、まずはデータを格納する大元である.dbファイルを作ります。自分の場合はユーザー名のディレクトリに新しく「python_sqlite3」というフォルダを新規に作ってそこで作業しています。

パスはこんな↓のような感じです。

C:\Users\ユーザー名\python_sqlite3

まずこのフォルダの中に「sample.py」と「sample.db」を作ります。pyファイルを「sqlite3.py」にすると「AttributeError: module ‘sqlite3’ has no attribute ‘connect’」のエラーが出るので止めましょう。

そしてその中にテーブルを作っていくわけですが、基本としてはテーブルの数が増えると処理速度が遅くなるので、テーブルはなるべく少なめにした方がいいでしょう。プログラミング全般に言えることですが、シンプルかつ分かりやすくを意識していきましょう。

またsqlite3でのデータベースの操作はpyファイルをコマンドプロンプト(アナコンダプロンプト)で実行した方がいいと思います。というのも、jupyternotebookやSpyderなどのAnaconda経由で操作すると、コマンドがちゃんとデータベースに反映されていないことがあります。(Win10 64Bit)

<sqlite3.pyの中身>

import sqlite3

# データベースファイルのパス
dbpath = 'sample.db'

# データベースの作成・接続とカーソル生成
c = sqlite3.connect(dbpath)
cur = c.cursor()

# データテーブルを作成する
cur.execute("create table sample_table(id integer primarykey auto_increment , name text)")

2行目のcはconnectionのcです。人によってはconnectionとしている人もいます。cの方が後々コードの文字数が減ります。sqlite3の使い方はDBのパスを指定して接続し、そこからcur.execute()で引数にデータベースのコマンドを入れて実行という流れになっています。データベースのコマンドはダブルクオテーション(””)で囲います。

今回はsample_tableというデータテーブルを作ります。テーブルの作成はCREAT文で出来ます。テーブルとdbファイルは別物で、sample.dbというデータベースファイルの中にsample_tableというデータテーブルを作り、そこにデータを挿入していくイメージです。

テーブルの中身は無難にIDとNameにします。IDは数字型で同じものがあったら困るので、引数にintegerとprimarykeyを指定しておきます。データ型とプライマリーキーの話はsqliteではなくSQLの仕様の話です。

これをアナコンダプロンプト上から以下のコマンドで実行します。実行する前にcdでディレクトリを変更しておいてください。ディレクトリが間違っていると「 No such file or directory」というエラーになります。

cd python_sqlite3
C:\Users\(自分のユーザー名)\python_sqlite3>python sample.py

これで、データベースとテーブルができたはずなので、中身を確認していきます。

#データベースファイルを起動してアクセスする
$sqlite3 sample.db

こんな感じで

SQLite version 3.24.0 2018-06-04 19:24:41

Enter “.help” for usage hints.

sqlite>

とでていたら成功です。これで今はsample.dbにアクセスしている状態になっているので、次はsample.dbの中に作成されているはずのデータテーブルを確認してみます。dbファイルの中にあるデータテーブルの確認は「.tables」で出来ます。

#テーブルの確認する
sqlite> .tables

実行して以下のようになっていれば成功です。

これでsample.dbの中にデータテーブル(sample_table)が作成されていることを確認できたので、次はINSERT文を使って、データテーブルにデータを追加していきます。

INSERT文でテーブルにデータを追加する

次は先ほど作成したsample.dbの中にあるsample_tableの中にINSERT文でデータを追加したいと思います。INSERT文での追加は以下のように行います。

#テーブルにデータを追加する
sqlite> insert into sample_table(id,name) values(1,'bitcoin');

この処理でsample_tableの中に1とBitcoinというデータが追加されたはずなので中身を確認します。テーブルのデータの確認はSELECT文で行うのが一般的です。

#sample_tableの中身を確認する
$select * from sample_table;

実行すると以下に返されます。

sqlite> select * from sample_table;
1|bitcoin

コマンドプロンプト上でsqlite3を終了する場合は以下のコマンドで実行できます。

#sqlite3を終了する
sqlite> .exit

終わり

以上がsqlite3からPython上からのデータベースの操作方法になります。SQLの文法については「SQLの書き方のツボとコツがゼッタイにわかるドリル本」という本が初心者向けで非常に分かりやすかったので紹介しておきます。

次はここに実際のビットコインの価格データをAPIを通して取得して、その値をデータベースに保存する処理を行っていきたいと思います。

スポンサーリンク

プログラミングの独学はとても難しい


プログラミングは小学校の義務教育にも導入され始めており、これから社会人として生きていく上でプログラミングはもはや出来て当たり前、出来なれば論外というエクセルレベルの必須スキルになりつつあります。そしてそういう話を聞いて参考書なりを購入して独学でプログラミング勉強しようと思っている人も少なくないでしょう。しかしプログラミングを独学で勉強し始めようと思うものの



・「分からない箇所で詰まって挫折してしまった」

・「勉強する時間が足りない」

・「ネットの記事だと情報が断片的でよくわからない」

・「コードのエラーの原因が分からない」



という壁にぶち当たって、プログラミングの勉強を止めてしまう方が少なくありません。独学でプログラミングを勉強してる時間のほとんどはつまづいている時間です。実際僕も最初のころ独学でプログラミングを勉強していた頃はエラーの原因が分からず丸1日を不意にしてしまった・・・そんな苦い経験がありました。



それで僕は一度はプログラミングの学習を諦めてしまいましたが、就活で現実を知る中で「プログラミングを勉強して、いずれフリーランスとして自由な生き方がしたい」「エンジニアとして若いうちから高収入を得たい」という気持ちから一念発起して「侍エンジニアのwebサービスコース」に申し込み、プロのエンジニアの方に対面でマンツーマンでPythonによるWebサービス作り方とWeb技術の基本を教えてもらい、ようやくプログラミングが理解でき、今ではエンジニアとしてそこそこの暮らしができるようになりました。





侍エンジニアでは、とりあえずプログラミングやインターネットの基本を知っておきたい人から、HTML・cssなどでWebサイトやWebアプリを作ってみたい人やPythonを勉強してデータサイエンティストやAIエンジニアになりたい人まで幅広いニーズに応えた様々なコースが用意されています。



IT業界と言ってもエンジニアの仕事はプログラミング言語次第でサーバーから機械学習・ディープラーニングまで多種多様ですし、侍エンジニアの無料レッスン(カウンセリング)を受けてみて、自分のやりたいITの仕事は何なのか?を見つけるのがエンジニアへの第一歩になります。ちなみに今侍エンジニアの無料レッスンを受けると1000円分のAmazonギフト券がもらえるので、試しに受けてみるだけもお得です。


自分は半端に独学やオンラインスクールで勉強して金と時間を無駄にするくらいなら、リアルのプログラミングスクールに通ってしっかりプログラミングを勉強した方がいいと思います。ちなみに今、侍エンジニアに申し込むと、25歳以下の学生の方であれば、受講料が20%OFFになるので超お得です。


そして、プログラミングは大勢で授業を受けたり漫然とオンライン学習をするよりも自分が分からない箇所をピンポイントでプロの講師に直接質問して、ちゃんと納得するというスタイルの方がお金は確かに少し掛かりますが、独学で学ぶよりも絶対にモノになります。


シェアする

  • このエントリーをはてなブックマークに追加

フォローする