PythonからのSQLite操作についてCopilotが教えてくれた
(Python学習初心者の試行錯誤・備忘録です)
昨日は
と、「テーブルが無い時の自動作成」ができたことで、自分は大いに感激していたのでした。
その後、Copilotにリレーションのあるテーブルの扱い方を漠然と聞いたところ、(特に注文していないのに)「テーブル自動作成」をするサンプルコードを書いてくれました。自動作成は「当たり前」の話だったのか(^_^;)
import sqlite3
# データベースに接続する
conn = sqlite3.connect('school.db')
c = conn.cursor()
# テーブルを作成する
def create_tables():
c.execute('''CREATE TABLE IF NOT EXISTS classes (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
teacher_name TEXT NOT NULL)''')
c.execute('''CREATE TABLE IF NOT EXISTS students (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
class_id INTEGER,
FOREIGN KEY(class_id) REFERENCES classes(id))''')
conn.commit()
# クラスを追加する
def add_class(name, teacher_name):
c.execute('INSERT INTO classes (name, teacher_name) VALUES (?, ?)', (name, teacher_name))
conn.commit()
# 生徒を追加する
def add_student(name, class_id):
c.execute('INSERT INTO students (name, class_id) VALUES (?, ?)', (name, class_id))
conn.commit()
# クラスを更新する
def update_class(class_id, name, teacher_name):
c.execute('UPDATE classes SET name = ?, teacher_name = ? WHERE id = ?', (name, teacher_name, class_id))
conn.commit()
# 生徒を削除する
def delete_student(student_id):
c.execute('DELETE FROM students WHERE id = ?', (student_id,))
conn.commit()
# データベースとテーブルを作成する
create_tables()
# ここでデータを追加、更新、削除する処理を行う
# 例:
add_class('Mathematics', 'Mr. Tanaka')
add_student('Suzuki Ichiro', 1)
# 変更を保存して接続を閉じる
conn.close()
c.execute('''CREATE TABLE IF NOT EXISTS classes (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
teacher_name TEXT NOT NULL)''')
def add_class(name, teacher_name):
c.execute('INSERT INTO classes (name, teacher_name) VALUES (?, ?)', (name, teacher_name))
conn.commit()
なんだか、仕様に関して知らなかった内容がいろいろと出てきました。今後実際に試してみたいと思います。