0Pricing
Python Academy · レッスン

接続とテーブルの作成

データベースを開き、スキーマを定義します

「接続とテーブルの作成」は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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 接続とテーブルの作成
  2. Insert、Select、Update、Delete
  3. パラメータ化クエリ
  4. トランザクションとコンテキストマネージャ
← Python Academyに戻る