【Python】データベース(SQLite3)と接続してテーブルを操作する(cursor,execute)

Pythonの記事作成を進めていて、SQLiteの扱い方について触れておりませんでした。

プログラミング言語の多くは、データベースと組み合わせて使用することによって、アプリケーションでできることが、ぐんっと増えます!

データベースとは?!
データを入れておく箱のことです。
例えば、ユーザ情報(ID・パスワード)を保持するデータベースを作成しておきます。
ユーザはログインするたびに、ID/パスワードで認証しますが、データベースに入っているデータと一致していればログイン可能。一致していなければログイン不可。となります。

そのほかにも、計算処理した結果を格納したりしますが、主に役割としては以下の2点です。

  • データの永続的な保持
  • データの使用
禄太
箱にしまっておいて、いつでも取り出せるようにしたのが、データベースです!

さて、前置きが長くなってしまいましたが、Pythonでもデータベースと連携をして、データの更新・削除・読込が可能です。

本日は、SQLite3で作成したデータベースに対して、Pythonのプログラムから接続してデータの操作をできるまで。を実践したいと思います。

CRUD操作(作成・更新・読込・削除)については、【【SQLite3】SQLでCRUD操作(CREATE/READ/UPDATE/DELETE)】をご参照ください。

目次

SQLite3モジュールをインポートして使用準備をする

さて、タイトルにモジュールという言葉が出てきました。

モジュールとは?!
関数や変数などの部品を、ひとまとめにして使えるようにしたファイルです。
import分によって呼び出して、自分以外の人が開発したプログラム、自分のプログラムに組み込んで利用することができます。
import モジュール名

上記のように使います。

以下のキャプチャは、for文の記事を書いたときのものですが、冒頭で、import sqlite3と記述しているのがわかると思います。

なお、sqlite3モジュールは、Pythonの標準ライブラリに属します。

そのため、pipコマンドで、新規にインストールをする必要はありません。

ライブラリについての補足は、以下の記事をご覧ください!

【Python】ライブラリに対する補足

2022年10月22日

データベースの作成と接続(sqlite3.connect())

データベースを作成します。

sqlite3.connect()にデータベース名称を引数に渡すことで、作成することができます。

すでにデータベースが存在する場合は、該当のデータベースに接続します。

#データベースへの接続
conn = sqlite3.connect('データベース名称')

データベース接続後の切断(close())

プログラムの最終行には、close()を記載します。
データベースの操作は、connect() 〜 close()の間で実行されます。

#データベースからの切断
conn.close()

import + 接続〜切断のPythonコード

#SQLite3のインポート
import sqlite3

#データベースへの接続
conn = sqlite3.connect('TEST_for.sqlite3')

#データベースからの切断
conn.close()

カーソルを作成し、データベースのテーブルを操作する(cursor())

カーソルには、データベースのデータにアクセスする役割があります。
データに対し、【検索】【挿入】【更新】を実行することができます。

cur = conn.cursor()

テーブルに対してSQL文を渡す(execute())

execute()は、テーブルに対してSQLを実行するためのメソッドです。
引数(()の中)に、SQLを記載することによって、実行することができます。
なお、executeでは、SQLは一つしか実行できません。複数のSQLを実行する場合は、executescript()を利用します。

execute()は、Cursorに属しているメソッドです。
そのため、直前で記載していたcurと一緒に使います。

cur.execute("実行するSQL")

テーブル操作までのPythonコード

cur = conn.cursor()
for shirts in cur.execute("select * from clothes"):

for文で利用したときのPythonコードです。

データの更新や削除を実行することもできます。

データ更新のサンプル

#更新(ID=3 Blue_shirtsの金額を4500円に変更)
cur.execute('UPDATE clothes SET PRICE = 4500 WHERE ID = "3"')
禄太
なお、再度SELECTでデータベースの値を確認しても、Blue_shirtの金額は、8500円に戻ってしまいます。
SQLで変更した値を保存するには、commitが必要ですが、それはまだ次回!

EOF(今回実行したSQL全行)

# coding: utf-8
import sqlite3

#データベースへ接続
conn = sqlite3.connect('TEST_for.sqlite3')

#カーソルの作成
cur = conn.cursor()

#ececuteで、SQL文をわたして、更新
#更新(ID=3 Blue_shirtsの金額を4500円に変更)
cur.execute('UPDATE clothes SET PRICE = 4500 WHERE ID = "3"')

#更新後
for shirts in cur.execute("select * from clothes"):
    print(shirts)

#データベースとの接続を切断
conn.close()

どのようなシステムにも、データベースへの接続や操作は不可欠ですので、ご参考になれば幸いです。

今日も一緒に学習していただいて、ありがとうございました!

では、また!

追伸:これからPythonを学ぶなら

これからPythonを学びたい!業務に活かせるように学習したい!という方ならば、まずはUdemyで学習を始めることをお勧めします。

Udemyでは、数多くの講師陣がITの知識やスキルアップのための解説動画を提供していて、現場でも役立つ知識が多数存在します。

禄太
私も、Udemyで学習しながらITのスキルを身につけ、仕事に役立てています。

特に、流行りもあるのだと思いますがPythonやAWSの講座は数が多く品質が高いものが多いです。

手前味噌ながら以下の記事で、主に初学者の方向けのお勧め講座のレビューをしていますので、ご参考にしていただけますと幸甚です。

脱初学者!!Udemy講座で徹底的に基礎を学んだので各講座のレビュー

2023年11月25日