🔰
SQL超初心者がPythonで勉強ログを作りながら出来たことをまとめた
Pythonで勉強ログを管理しながら学ぶSQL入門
はじめまして、きょーじゅと申します。
この記事では、勉強ログを作りながら学んだPythonでのSQLの操作について書いていこうと思います。
実は基本情報技術者試験や応用情報技術者試験での勉強で登場したSQLを正直何も分からないままに試験を乗り切ってしまったので、その備忘録を兼ねて本記事を作成しました。
なお、IT業務未経験ゆえに以下のコードはChatGPTにたくさん手伝ってもらいましたが、本記事の文章は人力です(コードもできる限り自分でも理解に努めながら書いています)。
それゆえに生じる正確性に欠ける点や表現の誤り等についてはご容赦ください。なお、Python3.12.2での動作を確認しています。
テーブル作成(study_log.py)
import sqlite3
# データベースに接続(なければ自動作成)
conn = sqlite3.connect('study_log.db')
cursor = conn.cursor()
# テーブル作成(日付、科目、単元、時間、理解度(1-5))
cursor.execute('''
CREATE TABLE IF NOT EXISTS study_log (
id INTEGER PRIMARY KEY AUTOINCREMENT,
date TEXT,
subject TEXT,
topic TEXT,
duration INTEGER,
understanding INTEGER,
note TEXT
)
''')
conn.commit()
conn.close()
データの挿入(insert_log.pyとして別ファイルを作成)
import sqlite3
# データベースに接続(なければ自動作成)
conn = sqlite3.connect('study_log.db')
cursor = conn.cursor()
cursor.execute('''
INSERT INTO study_log (date, subject, topic, duration, understanding, note)
VALUES (?, ?, ?, ?, ?, ?)
''', ('2025-07-17', '数学', '2次関数', 20, 4, 'ぼちぼち'))#記録の都度ここを変える
conn.commit()
conn.close()
データの修正(update_log.pyとして別ファイルを作成)
import sqlite3
# データベースに接続(なければ自動作成)
conn = sqlite3.connect('study_log.db')
cursor = conn.cursor()
cursor.execute('''
UPDATE study_log
SET date = ?, subject = ?, topic = ?, duration = ?, understanding = ?, note = ?
WHERE id = ?
''', ('2025-07-15', 'SQL', 'テーブルの作り方', 30, 5, 'わかった', 2)) #id=2の行を更新
conn.commit()
conn.close()
データの削除(delete_log.pyとして別ファイルを作成)
import sqlite3
# データベースに接続(なければ自動作成)
conn = sqlite3.connect('study_log.db')
cursor = conn.cursor()
cursor.execute('''
DELETE FROM study_log
WHERE id =?
''', (1,))#WHEREで指定しないと全削除される。今回はid=1を削除
conn.commit()
conn.close()
データの表示(view_log.pyとして別ファイルを作成)
import sqlite3
# データベースに接続(なければ自動作成)
conn = sqlite3.connect('study_log.db')
cursor = conn.cursor()
cursor.execute('''
SELECT id, date, subject, topic, duration, understanding, note
FROM study_log
''')
rows = cursor.fetchall()
for row in rows:
print(row)
今後の課題・展望
JOINやORDER BYなどを使ってさらに色々なデータを扱えたらと思います。また、今後は情報系資格の受験・合格体験記も書いていく予定ですのでよろしくお願いします。
Discussion