Python の sqlite3 モジュールで SQLite を扱う
データベースとテーブルの作成、INSERT/SELECT/UPDATE、パラメータ化クエリ、接続管理を学びます。
「Python の sqlite3 モジュールで SQLite を扱う」はCoddyKit上の無料Learn AI with Pythonレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLearn AI with Python学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Learn AI with Pythonコースには全4レッスンが含まれています。
AIにデータベースを使う理由
データが増えたり、プロジェクトの複数の部分で同じレコードが必要になったりするまでは、フラットファイルでも対応できます。データベースを使うと、高速なクエリ、構造化されたスキーマ、安全な同時アクセスが可能になります。
SQLiteは、Pythonの sqlite3 モジュールに組み込まれた、設定不要のファイルベースデータベースです。AIの実験や小規模なプロジェクトに最適です。
sqlite3.connectによる接続
sqlite3.connect はデータベースファイルを開くか作成し、接続を返します。一時的なメモリ上のデータベースには :memory: を使います。
import sqlite3
conn = sqlite3.connect("ml.db") # creates ml.db if missing
print(conn)カーソルとcursor.execute
接続から取得したカーソルを使ってSQLを実行します。cursor.execute(sql) は文をデータベースに送ります。
import sqlite3
conn = sqlite3.connect("ml.db")
cur = conn.cursor()
cur.execute("SELECT sqlite_version()")
print(cur.fetchone())CREATE TABLE IF NOT EXISTS
スキーマを指定してテーブルを定義します。IF NOT EXISTS を使うと、文を繰り返し安全に実行できます。テーブルがすでに存在していてもエラーになりません。
cur.execute("""
CREATE TABLE IF NOT EXISTS experiments (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
accuracy REAL,
created_at TEXT
)
""")プレースホルダーを使ったINSERT
文字列フォーマットでSQLを組み立てることは絶対に避けてください。SQLインジェクションの原因になり、引用符を含む値で問題が起きます。? プレースホルダーを使い、値をタプルとして渡してください。
cur.execute(
"INSERT INTO experiments (name, accuracy, created_at) VALUES (?, ?, ?)",
("baseline", 0.82, "2026-05-29"),
)executemanyによる複数行の挿入
executemany はタプルのリストを1回の効率的な呼び出しで挿入します。execute をループで呼び出すよりも、はるかに高速です。
rows = [
("rf", 0.88, "2026-05-29"),
("xgb", 0.91, "2026-05-29"),
]
cur.executemany(
"INSERT INTO experiments (name, accuracy, created_at) VALUES (?, ?, ?)",
rows,
)conn.commit()で変更を保存
書き込みはトランザクション内で行われ、conn.commit() を呼び出すまで永続化されません。これを忘れるのは初心者に最も多いバグで、接続を閉じるとデータが気付かないうちに消えてしまいます。
conn.commit() # persist all pending INSERT/UPDATE/DELETEfetchallとfetchoneによるクエリ結果の取得
SELECT の後で、結果を取得します。
fetchone()— 次の1行fetchall()— 残りのすべての行をタプルのリストとして取得- 大きな結果の場合はカーソルを直接反復処理
cur.execute("SELECT name, accuracy FROM experiments")
for row in cur.fetchall():
print(row) # ("baseline", 0.82) ...絞り込みと並べ替え
SQLに複雑な処理を任せます。WHERE で絞り込み、ORDER BY で並べ替え、LIMIT で件数を制限します。クエリの値にもプレースホルダーを使ってください。
cur.execute(
"SELECT name, accuracy FROM experiments WHERE accuracy > ? ORDER BY accuracy DESC LIMIT 3",
(0.85,),
)
print(cur.fetchall())名前でアクセスするためのRow Factory
デフォルトでは、行はタプルです。conn.row_factory = sqlite3.Row を設定すると、列名でアクセスできるようになり、コードが大幅に読みやすくなります。
import sqlite3
conn = sqlite3.connect("ml.db")
conn.row_factory = sqlite3.Row
cur = conn.cursor()
cur.execute("SELECT * FROM experiments")
row = cur.fetchone()
print(row["name"], row["accuracy"])安全性のためのコンテキストマネージャー
接続に with を使うと、成功時には自動的にコミットされ、エラー時にはロールバックされます。closing と組み合わせれば、確実に後片付けできます。
import sqlite3
from contextlib import closing
with closing(sqlite3.connect("ml.db")) as conn:
with conn: # auto commit/rollback
conn.execute(
"INSERT INTO experiments (name, accuracy) VALUES (?, ?)",
("svm", 0.79),
)クイックチェック:書き込みの永続化
複数のINSERT文を実行してから接続を閉じましたが、次に開いたときにはデータが消えていました。
振り返り:sqlite3によるSQLite操作
これで、Pythonから実際のデータベースを使えるようになりました。
sqlite3.connectとcursor- 安全なスキーマを定義する
CREATE TABLE IF NOT EXISTS ?プレースホルダーとexecutemanyを使ったINSERT- 書き込みを永続化する
conn.commit() fetchone/fetchall、WHERE/ORDER BY/LIMIT- 読みやすく安全なコードのための
sqlite3.Rowとコンテキストマネージャー
次は、pandasとSQLをつなぎます。
よくある質問
「Python の sqlite3 モジュールで SQLite を扱う」レッスンは無料ですか?
はい。「Python の sqlite3 モジュールで SQLite を扱う」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Learn AI with Pythonコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Learn AI with Pythonコースには全4レッスンが含まれています。
「Python の sqlite3 モジュールで SQLite を扱う」で何を学びますか?
データベースとテーブルの作成、INSERT/SELECT/UPDATE、パラメータ化クエリ、接続管理を学びます。 ブラウザで直接実行するハンズオンコードでLearn AI with Pythonを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Learn AI with Pythonを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのLearn AI with Pythonは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「Python の sqlite3 モジュールで SQLite を扱う」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このLearn AI with Pythonレッスンでコードを書いて実行できますか?
はい。すべてのLearn AI with Pythonレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Python の sqlite3 モジュールで SQLite を扱う
- Pandas と SQL の連携
- 機械学習の結果を保存・検索する
- ベクトルデータベース入門