見出し画像

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()

なんだか、仕様に関して知らなかった内容がいろいろと出てきました。今後実際に試してみたいと思います。

いいなと思ったら応援しよう!