0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

TinyDB操作備忘録

Posted at

勉強用に購入したアプリ制作本から引用した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.

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?