特殊なPython
生成系AIが話題の中で、その開発言語であるPythonも注目を浴び続けています。このPythonは他のプログラミング言語とはちょっと違う独特なところがあります。例えば、データベースです。
プログラミング言語とデータベースは別のアプリです。従って、データベースを利用したい場合は別途インストールする必要があります。
データベースアプリのインストールは、問題なくスムーズにできればいいのですが、逆に少しでも問題が発生すれば、解決するのは困難を極めることがあります。
Pythonでもデータベースを利用する場合は、別のデータベースアプリを使うことになります。しかし、データベースアプリを別途インストールすることなく、利用できます。つまりPythonの中にデータベースアプリが用意されているのです。初学者にとって敷居の低い有難い言語といえます。
データベースを使ってみる
Pythonで用意されているデータベースは「SQLite3」です。名前から想像できる通り、軽量でシンプルなアプリですが、データベース/SQLを学習するうえでは、問題ありません。
下記のコードはPyWebで実行可能です。
準備
利用するには、まずimport命令で呼び出します。
1 |
import sqlite3 |
データベース作成
次にデータベースを作成します。
1 2 |
# データベース接続(存在しなければ作成) con = sqlite3.connect("tutorial.db") |
上記は、「tutorial.db」というデータベースを作成しています。既に存在している場合は、データベースへ接続します。
テーブル定義
データベース内のテーブルを定義します。
1 2 3 4 |
# カーソル作成(テーブル操作で必要) cur = con.cursor() # テーブル作成 cur.execute("CREATE TABLE IF NOT EXISTS seito(id INTEGER PRIMARY KEY, name TEXT, furigana TEXT)") |
このテーブルは「seito」という名称で、次の項目を定義しています。
- id:番号
- name:名前
- furigana:ふりがな
データ挿入
テーブルが定義できましたので、この中にデータを挿入します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# seitoテーブルの全データ削除 cur.execute(""" DELETE FROM seito; """) # seitoテーブルへデータ挿入 cur.execute(""" INSERT INTO seito VALUES (1,'山田太郎','やまだたろう'), (2,'中村さやか','なかむらさやか'), (3,'佐藤健太郎','さとうけんたろう'), (4,'吉田千代子','よしだちよこ'), (5,'佐々木和也','ささきかずや') """) # データ確定 con.commit() |
5件のデータを挿入しています。
データ照会
作成したデータを照会します。
1 2 3 4 5 6 7 8 9 |
# seitoテーブルの全データを取得 cur.execute(""" SELECT * FROM seito """) print("----------------") # 取得データを1件ずつ表示 for row in cur: print(row[0],row[1],row[2]) |
select命令でseitoテーブルから全件取得し、forで1件ずつ表示しています。
データ更新
5番目のふりがなを変更します。
1 2 3 4 5 6 |
# seitoテーブルのID5のふりがなを変更 cur.execute(""" UPDATE seito set furigana = 'ささきかずなり' where id = 5; """) # データ確定 con.commit() |
終了
カーソル、データベース接続を終了します。
1 2 3 4 |
# カーソルクローズ cur.close() # データベース接続クローズ con.close() |
全体ソース
全体のソースコードです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# テーブル作成 import sqlite3 # データベース接続(存在しなければ作成) con = sqlite3.connect("tutorial.db") # カーソル作成 cur = con.cursor() ''' テーブルseito作成 既に存在していれば作成しない 項目 id:番号,name:名前,furigana:ふりがな ''' def create(): cur.execute("CREATE TABLE IF NOT EXISTS seito(id INTEGER PRIMARY KEY, name TEXT, furigana TEXT)") def insert(): # seitoテーブルの全データ削除 cur.execute(""" DELETE FROM seito; """) # seitoテーブルへデータ挿入 cur.execute(""" INSERT INTO seito VALUES (1,'山田太郎','やまだたろう'), (2,'中村さやか','なかむらさやか'), (3,'佐藤健太郎','さとうけんたろう'), (4,'吉田千代子','よしだちよこ'), (5,'佐々木和也','ささきかずや') """) # データ確定 con.commit() # データ照会 def query(): # seitoテーブルの全データを取得 cur.execute(""" SELECT * FROM seito """) print("----------------") # 取得データを1件ずつ表示 for row in cur: print(row[0],row[1],row[2]) # データ更新 def update(): # seitoテーブルのID5のふりがなを変更 cur.execute(""" UPDATE seito set furigana = 'ささきかずなり' where id = 5; """) # データ確定 con.commit() # テーブル作成 create() # データ作成 insert() # データ照会呼び出し query() # データ更新呼び出し update() # データ照会呼び出し query() # カーソルクローズ cur.close() # データベース接続クローズ con.close() |
PyWebで確認/実行する場合は、下記をクリックしてください。