「Pythonでデスクトップアプリを作ろう 後編」 その11
# -*- coding: utf-8 -*-"""Created on Thu Mar 30 16:00:37 2023@author: mlupi""""""『日経ソフトウエア』2022年11月号(p.046~p.065)の特集記事 9月号の「特集2 Pythonでデスクトップアプリを作ろう 前編」に引き続いて、 11月号の「特集3 Pythonでデスクトップアプリを作ろう 後編」に挑戦中。なお、基礎については、当ブログの「Pythonことはじめ」などを参照してください。"""# 「Pythonでデスクトップアプリを作ろう 後編」 その11# 標準の「Tkinter」+「SQLite3」を使って# Part2 カレンダー型「メモアプリ」を作る(p.053~p.058)# ① メモアプリのデータベースを作る(p.053~p.054)#Python#Tkinter#SQLite3#日経ソフトウエア#デスクトップアプリ#データベース#SQL文#SQL文の「?」# 「パラメータ割り当て」## 『日経ソフトウエア』2022年11月号(p.046~p.065)## 目次## Intro Python+Tkinter+SQLiteが一番手軽(p.046~p.047)## Part1 SQLite3の基本をマスターしよう(p.047~p.053)# ① データベースを作成する(p.047~p.048)# ② テーブルを作成する(p.048~p.049)# ③ 「INSERT INTO」文でデータを追加する(p.049~p.050)# ④ データベースやテーブルの削除(p.050)# ⑤ 「SELECT」文でデータを抽出する(p.050~p.051)# ⑥ 「LIKE」演算子であいまい検索を実現する(p.051~p.052)# ⑦ 「ORDER BY」句でデータをソートする(p.052~p.053)# Part2 カレンダー型「メモアプリ」を作る(p.053~p.058)# ① メモアプリのデータベースを作る(p.053p.054)# ② メモを入力・表示する機能(p.054~p.055)# ③ カレンダー型「メモアプリ」のプログラム(p.055~p.057)# ④ 「保存」ボタンがクリックされた時の処理(p.057)# ⑤ 「calender」モジュールを使う(p.057~p.058)# Part3 「蔵書管理アプリ」を作る(p.058~p.065)# ① 「Treeview」ウィジェットの使い方(p.059~p.060)# ② 「Menu」ウィジェットの使い方(p.060~p.061)# ③ データベースを作成する(p.061~p.062)# ④ 「蔵書管理アプリ」を完成させる(p.062~p.065)#========== リスト1●「create_db.py」はここから# 「memo.db」と「daily」テーブルを作るプログラム# ライブラリのインポート(「SQLite3」モジュール)import sqlite3# データベースの作成# 「sqlite3.connect」関数でデータベースを作成する。# 他のDBMSには、データベースを作成する「CREATE DATABASE」という「SQL」文が存在するが、# 「SQLite3」にはないので注意が必要。conn = sqlite3.connect('memo.db')# カーソルオブジェクトの作成# カーソルオブジェクトでデータベースの操作を行う。cur = conn.cursor()# 「daily」テーブルの作成cur.execute("""CREATE TABLE daily( date TEXT PRIMARY KEY, memo TEXT NOT NULL)""")# サンプルデータを1件だけ入力# SQL文の「?」の部分には、「execute」関数実行時に、タプル(date,memo)の# の要素(dateとmemo)が順に挿入される。# このようなやり方は、「パラメータ割り当て」と呼ばれる。# 「パラメータ割り当て」を使うと、文字列の連結処理を行わずに、変数の値をSQL文に# 挿入できる。date = '2022_7_26'memo = '本日のメモ\n\n牛乳を買うこと\n髪を切りに行く'sql ='INSERT INTO daily VALUES (?, ?)'cur.execute(sql, (date, memo))# 「コミット」関数の実行# 「INSERT INTO」文を実行した後、コネクションオブジェクトの「commit」関数を実行して、コミットする必要委がある。# このコミットの実行を行わないと、データをデータベースに追加できないので注意。conn.commit()# データの確認して表示for row in cur.execute("SELECT * FROM daily"): print(row)# 接続の切断conn.close()#========== リスト1●「create_db.py」はここまでリスト1●「create_db.py」に実行結果