勉強用に購入したアプリ制作本から引用したSNS風のwebアプリケーションに
以下の機能を追加したい。
①自分の投稿を削除する機能
②自・他の投稿を音声出力して読み上げる機能
今回は①自分の投稿を削除する機能を実装させる為、
tinydbの操作コマンドを以下にまとめた。
(Ubuntuで動作確認しました)
①sample.dbをインストール&読み込み
from tinydb import TinyDB, Query
db = TinyDB('sample.json')
②poke_bookテーブルを作成
table = db.table('poke_book')
③poke_bookテーブルに以下の3レコードを追加
# name: フシギダネ, no: 1
# name: フシギソウ, no: 2
# name: フシギバナ, no: 3
dic_list = {[{'name':'フシギダネ', 'no':1}, {'name':'フシギソウ', 'no':2}, {'name':'フシギバナ', 'no':3}]}
table.insert_multiple(dic_list)
# 実行結果
[1, 2, 3]
④以下のライブラリをインポート
import json
import pprint
⑤jsonファイルを辞書として読み込む。
この時にレコードのキー値が現れる。
with open('sample.json') as f:
df = json.load(f)
pprint.pprint(df, width=40)
# 実行結果
{'1': {'name': 'フシギダネ', 'no': 1},
'2': {'name': 'フシギソウ', 'no': 2},
'3': {'name': 'フシギバナ', 'no': 3}}
今回はこのキー値(1,2,3)を使用してレコードの削除・追加を行う。
(以下を実行すると、キー値が1のレコードを取得できる)
print(df['poke_book']['1'])
# 実行結果
{'name': 'フシギダネ', 'no': 1}
⑥1番目のレコード(キー値:1)を削除してみる。
レコードの削除はpopやdelで実行できる。
ここではpopを使用する。
x = df['poke_book'].pop('1')
print(x)
# 実行結果
{'2': {'name': 'フシギソウ', 'no': 2}, '3': {'name': 'フシギバナ', 'no': 3}}
無事、poke_bookテーブルから指定したキー値のレコードを削除できた。
⑦レコードの削除が出来たら、json.dump()を使用してjsonファイルを保存・更新する。
(辞書型として読み込んだjsonファイルを、元のリスト形式にして保存し直すといったイメージ)
書式:json.dump(テーブル, f(形式), インデント幅)
with open('sample.json', 'w') as f:
json.dump(df, f, indent=4)
⑧ファイルを開きなおし、レコードが削除出来ていることを確認する
with open('sample.json') as f:
print(f.read())
# 実行結果
{
"poke_book": {
"2": {
"name": "\u30d5\u30b7\u30ae\u30bd\u30a6",
"no": 2
},
"3": {
"name": "\u30d5\u30b7\u30ae\u30d0\u30ca",
"no": 3
}
}
}
テーブルへの削除反映が成功!!('ω')ノ
fin.