接続とテーブルの作成
データベースを開き、スキーマを定義します
「接続とテーブルの作成」はCoddyKit上の無料Python Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPython Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Python Academyコースには全4レッスンが含まれています。
sqlite3とは
Pythonには、標準ライブラリのsqlite3モジュールが付属しています。これを使うと、別のサーバーを必要としない、軽量なファイルベースのSQLデータベースであるSQLiteを操作できます。
- インストールは不要です
- データベース全体が1つのファイルに保存されます
- プロトタイプ、テスト、小規模なアプリに最適です
import sqlite3
print(sqlite3.version)データベースへの接続
sqlite3.connect()を使ってデータベースを開きます。ファイルが存在しない場合、SQLiteが作成します。
':memory:'を渡すと、一時的なメモリ内データベースが作成され、接続を閉じると消去されます。
import sqlite3
conn = sqlite3.connect(':memory:')
print('Connected:', conn)
conn.close()Cursorオブジェクト
SQLを実行するにはカーソルが必要です。conn.cursor()を呼び出して取得し、cursor.execute()を使ってSQL文を送信します。
import sqlite3
conn = sqlite3.connect(':memory:')
cur = conn.cursor()
print('Cursor ready:', cur)
conn.close()テーブルの作成
CREATE TABLEでスキーマを定義します。各列には名前と、INTEGER、TEXT、REALなどの型が必要です。
import sqlite3
conn = sqlite3.connect(':memory:')
cur = conn.cursor()
cur.execute('CREATE TABLE users (id INTEGER, name TEXT, age INTEGER)')
print('Table created')
conn.close()主キー
主キーは各行を一意に識別します。INTEGER PRIMARY KEYと宣言すると、SQLiteが値を自動的にインクリメントします。
import sqlite3
conn = sqlite3.connect(':memory:')
cur = conn.cursor()
cur.execute('CREATE TABLE books (id INTEGER PRIMARY KEY, title TEXT)')
print('books table ready')
conn.close()IF NOT EXISTS
CREATE TABLEを2回実行するとエラーになります。IF NOT EXISTSを追加すると、文を繰り返し安全に実行できます。
import sqlite3
conn = sqlite3.connect(':memory:')
cur = conn.cursor()
sql = 'CREATE TABLE IF NOT EXISTS notes (id INTEGER PRIMARY KEY, body TEXT)'
cur.execute(sql)
cur.execute(sql)
print('No error on second run')
conn.close()カラム制約
制約によって、データに関するルールをデータベースレベルで適用できます。
NOT NULLは値を必須にしますUNIQUEは重複を禁止しますDEFAULTは既定値を設定します
import sqlite3
conn = sqlite3.connect(':memory:')
cur = conn.cursor()
cur.execute('CREATE TABLE accounts (id INTEGER PRIMARY KEY, email TEXT NOT NULL UNIQUE, active INTEGER DEFAULT 1)')
print('accounts table with constraints')
conn.close()スキーマの確認
SQLiteはスキーマ情報をsqlite_masterに保存します。これをクエリすると、テーブルの一覧を取得できます。
import sqlite3
conn = sqlite3.connect(':memory:')
cur = conn.cursor()
cur.execute('CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)')
cur.execute("SELECT name FROM sqlite_master WHERE type='table'")
print(cur.fetchall())
conn.close()ファイルへの保存
データを永続化するには、connect()にファイル名を渡します。プログラムが終了した後もデータベースは残ります。
変更をディスクに書き込むには、conn.commit()を呼び出す必要があります。
import sqlite3
conn = sqlite3.connect('app.db')
cur = conn.cursor()
cur.execute('CREATE TABLE IF NOT EXISTS items (id INTEGER PRIMARY KEY, name TEXT)')
conn.commit()
print('Saved to app.db')
conn.close()テーブルの削除
DROP TABLEでテーブルを削除します。すでに削除されている場合のエラーを避けるには、IF EXISTSを使用します。
import sqlite3
conn = sqlite3.connect(':memory:')
cur = conn.cursor()
cur.execute('CREATE TABLE temp (id INTEGER)')
cur.execute('DROP TABLE IF EXISTS temp')
print('Dropped temp table')
conn.close()接続は必ず閉じる
開いた接続はファイルハンドルを保持します。処理が終わったら、必ずconn.close()で閉じてください。または、withブロックを使って自動的に後処理を行います。
import sqlite3
conn = sqlite3.connect(':memory:')
cur = conn.cursor()
cur.execute('CREATE TABLE t (id INTEGER)')
conn.close()
print('Connection closed cleanly')確認テスト
テーブルの作成について理解度を確認しましょう。
まとめ
sqlite3の基本を学びました。
connect()はデータベースファイルを開く、または作成しますcursor()はSQLを実行するためのオブジェクトを返しますCREATE TABLEは型と制約を使ってスキーマを定義しますcommit()は変更を永続化し、close()は接続を解放します
次は、行の挿入と読み取りを行います。
よくある質問
「接続とテーブルの作成」レッスンは無料ですか?
はい。「接続とテーブルの作成」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Python Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Python Academyコースには全4レッスンが含まれています。
「接続とテーブルの作成」で何を学びますか?
データベースを開き、スキーマを定義します ブラウザで直接実行するハンズオンコードでPython Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Python Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのPython Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「接続とテーブルの作成」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このPython Academyレッスンでコードを書いて実行できますか?
はい。すべてのPython Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。