【Python】sqlite3モジュールでSQLiteデータベースにデータを保存・取得する方法
Pythonでは、標準ライブラリのsqlite3モジュールを使用することで、SQLiteデータベースを手軽に操作できます。以下のコードでは、sqlite3モジュールをインポートしてデータベース接続を確立し、テーブルを作成した後、データの挿入と取得を行い、最後に接続を閉じるまでの一連の流れを紹介します。
サンプルコード
#sqlitedemo.py
import sqlite3
from employee import employee
# データベースに接続
c = conn.cursor()
# テーブルを作成
c.execute('''CREATE TABLE employee(first text, last text, pay integer)''')
# Employeeオブジェクトを生成
emp_1 = employee('John', 'Doe', 50000)
emp_2 = employee('Jane', 'Doe', 60000)
emp_3 = employee('James', 'Dell', 80000)
# 名前付きプレースホルダーを使ってデータを挿入
c.execute('''INSERT INTO employee VALUES(:first, :last, :pay)''',
{'first': emp_1.first, 'last': emp_1.last, 'pay': emp_1.pay})
c.execute('''INSERT INTO employee VALUES(:first, :last, :pay)''',
{'first': emp_2.first, 'last': emp_2.last, 'pay': emp_2.pay})
c.execute('''INSERT INTO employee VALUES(:first, :last, :pay)''',
{'first': emp_3.first, 'last': emp_3.last, 'pay': emp_3.pay})
# 条件に一致するデータを取得
c.execute("SELECT * FROM employee WHERE last='Doe'")
print(c.fetchone())
print(c.fetchmany(2))
# 変更を保存して接続を閉じる
conn.commit()
conn.close()
コードのポイント
- sqlite3.connect():指定したファイル名のSQLiteデータベースに接続します。ファイルが存在しない場合は自動的に新規作成されます。
- cursor():SQL文を実行するためのカーソルオブジェクトを取得します。
- CREATE TABLE:従業員の名(first)、姓(last)、給与(pay)を格納するテーブルを定義しています。
- 名前付きプレースホルダー:
:firstや:lastのように値を直接SQL文に埋め込まず辞書で渡すことで、SQLインジェクションを防ぎながら安全にデータを挿入できます。 - fetchone() / fetchmany():fetchone() は条件に一致した最初の1行を、fetchmany(n) は最大 n 行をタプルとして返します。
- commit():INSERTなどの変更を確定してデータベースに保存します。呼び出し忘れるとデータが反映されないため注意が必要です。
実行結果
('John', 'Doe', 50000)
[('Jane', 'Doe', 60000), ('James', 'Dell', 80000)]
このように、sqlite3モジュールを使えば、テーブルの作成からデータの挿入・取得までをPythonのコードだけで完結できます。実際の開発では with conn: のようなコンテキストマネージャーを利用すると、例外発生時にも自動的にコミットやロールバックが行われるため、より安全にデータベースを扱えます。
-
Pythonで関数から別の関数を返す方法をわかりやすく解説
Pythonは第一級関数(first-class functions)をサポートしているプログラミング言語です。実際、Pythonにおけるすべての関数は第一級オブジェクトとして扱われます。 これは何を意味するのでしょうか。具体的には、以下のようなことが可能になります。 関数の中から別の関数を返す(returnする) 関数をリストや辞書などのコレクションに格納する 関数を、通常の変数やオブジェクトと同じように扱う さらに、関数の中で別の関数を定義し、それを返すことさえできます。これはクロージャ(closure)と呼ばれる強力なテクニックの基礎にもなる概念です。 サンプルコード:関数内で関数を
-
Pythonで再帰関数を作成する方法|基本の考え方と実装例を解説
再帰(Recursion)とは? 再帰とは、関数がその処理の中で自分自身を1回以上呼び出すプログラミング手法のことです。通常、その呼び出しの戻り値を利用しながら最終的な結果を返します。このように自分自身を呼び出す形で定義された関数を「再帰関数」と呼びます。 再帰関数に欠かせない「終了条件」 再帰関数をプログラムで使用するには、必ず処理が終了することが前提となります。再帰呼び出しが行われるたびに扱う問題の規模が少しずつ小さくなり、それ以上再帰せずに答えを直接求められる状態――いわゆる「ベースケース」へと近づいていくことで、関数は適切に停止します。 逆に、ベースケースに到達できないまま呼び出し