SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Pythonで学ぶバックエンド開発

【Pythonでデータベースを扱おう】Visual Studio Codeを使ったデータベース「SQLite3」を解説

Pythonで学ぶバックエンド開発 第4回

  • X ポスト
  • このエントリーをはてなブックマークに追加

Visual Studio CodeでSQLite3のCRUDをしてみる

 Page 1でVisual Studio Code上でSQLite3を使う方法は理解できたと思います。Page 2では、この連載で使うデータベースを作ってみたいと思います。データベースの使い方は知っている人は多いと思いますが、この連載で使うデータも作るので、必ずこのページのサンプルコードを実行してください。

 データベースの基本は「CRUD」です。「Create(作成)」「Read(読み出し)」「Update(更新)」「Delete(削除)」の頭文字をとった略語です。これらについてこのページではサンプルコードを例示します。

「bezierbbs.db」のレコード一覧
「bezierbbs.db」のレコード一覧

データを保存するファイルを作成する

 現在のフォルダに右クリックメニューの「New File」メニューで「bezierbbs.db」拡張子の空のファイルを作成します。Page 1とはファイル名を変更しています。このページで実行するサンプルコードでこのファイルにデータを作成します。

テーブルを作成する

 「Query Editor」で次のサンプルコードをコーディングして実行(▷)しテーブルを作成します。「id」カラムは1から順に繰り上げてユニークな(一意の)値で、「title」カラムはタイトルで、「speaker」カラムは発言者で、「date」カラムは日時で、「sentence」カラムは書き込む文章で、「xy」カラムはベジェ曲線のデータです。「article_id」カラムはarticleテーブルのidカラムの値を入れます。

サンプルコード「記事テーブルを作成」
CREATE TABLE IF NOT EXISTS article (id INTEGER PRIMARY KEY AUTOINCREMENT,title TEXT,speaker TEXT,date TEXT,sentence TEXT,xy TEXT);

サンプルコードの解説

 「article」テーブルがなければ(IF NOT EXISTS)、articleテーブルを作成します。整数(INTEGER)の主キー(PRIMARY KEY)の自動インクリメント(AUTOINCREMENT)の「id」カラムを、テキスト(TEXT)の「title」カラムを、テキストの「speaker」カラムを、テキストの「date」カラムを、テキストの「sentence」カラムを、テキストの「xy」カラムを作成します。

サンプルコード「コメントテーブルを作成」
CREATE TABLE IF NOT EXISTS comment (id INTEGER PRIMARY KEY AUTOINCREMENT,article_id INTEGER,speaker TEXT,date TEXT,sentence TEXT);

サンプルコードの解説

 「comment」テーブルがなければ(IF NOT EXISTS)、commentテーブルを作成します。整数(INTEGER)の主キー(PRIMARY KEY)の自動インクリメント(AUTOINCREMENT)の「id」カラムを、整数の「article_id」カラムを、テキストの「speaker」カラムを、テキストの「date」カラムを、テキストの「sentence」カラムを作成します。

レコードを挿入する

 実際に使うデータであるレコードを1行だけテーブルに挿入します。SQL文は「INSERT INTO テーブル名(カラム1,カラム2) VALUES(値1,値2);」と書きます。「datetime」関数はSQLite3に最初から用意されている日時を取得する関数です。idカラムは指定していませんが自動インクリメントなので勝手に1~の値が入ります。

サンプルコード「記事を挿入」
INSERT INTO article(title,speaker,date,sentence,xy) VALUES ('一筆書きの「お絵描き掲示板」','たけし',datetime('now', 'localtime'),'誰でも一筆書きできます。','400,200,400,200,200,500,200,500,600,500,600,500,400,200,400,200');

サンプルコードの解説

 articleテーブルのidカラムには1~のユニークな値が、titleカラムとspeakerカラムとdateカラムとsentenceカラムとxyカラムにそれぞれ「VALUES」の値を挿入します。

サンプルコード「コメントを挿入」
INSERT INTO comment(article_id,speaker,date,sentence) VALUES (1,'匿名',datetime('now', 'localtime'),'誰でもアニメーションするワイヤーフレーム(針金の3Dオブジェクト)をWebブラウザ上でデザインすることができて、この「3Dお絵描き掲示板」で世界中の人に公開でき、コメントを書いたり書いてもらったりして交流することができます!');

サンプルコードの解説

 commentテーブルのidカラムには1~のユニークな値が、article_idカラムとtitleカラムとspeakerカラムとdateカラムとsentenceカラムにそれぞれ「VALUES」の値を挿入します。

レコードを取得する

 レコードのカラムの値を取得するには、SQL文「SELECT カラム1,カラム2 FROM テーブル名;」を使います。

サンプルコード「記事を取得」
SELECT * FROM article;

サンプルコードの解説

 articleテーブルから全てのカラム(*)の値を取得します。

サンプルコード「コメントを取得」
SELECT date FROM comment;

サンプルコードの解説

 commentテーブルからdateカラムの値を取得します。

レコードを更新する

 レコードのカラムの値を更新するには、SQL文「UPDATE テーブル名 SET カラム1 = 値1,カラム2 = 値2 WHERE カラム3 = 値3;」を使います。

サンプルコード「記事を更新」
UPDATE article SET title = '一筆書き',speaker = 'おおにし' WHERE id = 1;

サンプルコードの解説

 articleテーブルのidカラムが1のところ(WHERE)のtitleカラムを'一筆書き'に、speakerカラムを'おおにし'に更新します。

サンプルコード「コメントを更新」
UPDATE comment SET speaker = 'たけし',sentence = '更新した' WHERE id = 1;

サンプルコードの解説

 commentテーブルのidカラムが1のところのspeakerカラムを'たけし'にsentenceカラムを'更新した'に更新します。

レコードを削除する

 次の削除コードは参考までに紹介しているだけで、実行しなくていいです。もし実行した場合は、もう一度INSERT INTOでレコードをいくつか追加してください。そうしないと次回以降でレコードが無くては困ります。レコードを削除するにはSQL文「DELETE FROM テーブル名 WHERE カラム名 = 値;」を使います。

サンプルコード「記事を削除」
DELETE FROM article WHERE id=1

サンプルコードの解説

 articleテーブルのidカラムが1のところ(WHERE)のレコードを削除します。

サンプルコード「コメントを削除」
DELETE FROM comment WHERE id=1

サンプルコードの解説

 commentテーブルのidカラムが1のところのレコードを削除します。

次のページ
PythonからプログラミングしてSQLite3を扱う

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Pythonで学ぶバックエンド開発連載記事一覧

もっと読む

この記事の著者

大西 武(オオニシ タケシ)

 1975年香川県生まれ。大阪大学経済学部経営学科中退。プログラミング入門書などを30冊以上商業出版する作家。ドコモでグランプリなどコンテストに20回以上入賞するアーティスト。オリジナルの間違い探し「3Dクイズ」がTVで約10回出題。プロフィールサイト:https://profile.vixar.jp

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/21527 2025/08/08 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング