如何将信息作为数组 python 保存到 json

How to save information to json as array python

我正在 python 广告 kivy 制作一个应用程序,让用户输入时间、血糖、碳水化合物和服用的药物。目前,我将用户输入的信息保存到 TinyDB json 文件中,并且不会删除以前的信息。但是我不知道如何检索特定的信息。我想知道是否有一种方法可以将 json 文件作为数组或可以轻松检索特定信息的方法保存到 json 文件中,例如用户最后的葡萄糖条目。这是我当前的代码。

.py

def save_entry(self):
    store = JsonStore('entry.json')
    time = self.gt.text
    glucose = self.gr.text
    carbs = self.c.text
    medications_taken = self.mt.text


    db = TinyDB('entry.json')
    User = Query()
    db.insert({'time': time, 'glucose': glucose, 'carbs': carbs, 'medications_taken': medications_taken})


def retrieve(self):
    db = TinyDB('entry.json')
    User = Query()
    with open('entry.json', 'r') as f:
        f = db.search(Query().time != 0)[0]
        print f

.kv

<Phone>:

gt: _time
gr: _glucose_reading
c: _food
mt: _meds_taken

       Screen:
            name: 'new_entry'                
            GridLayout:
                cols:1
                BoxLayout:
                    Label:
                        size_hint_x: 0.22
                        bold: True
                        markup: True
                        text: '[size=40][color=0000ff]Time[/color][/size]'
                    TextInput:
                        id: _time
                        hint_text: 'Current Time'

                BoxLayout:
                    Label:
                        size_hint_x: 0.22
                        bold: True
                        markup: True
                        text: '[size=28][color=0000ff]Blood Sugar (mg/dL)[/color][/size]'
                    TextInput:
                        id: _glucose_reading
                        hint_text: 'Current Blood Sugar'

                BoxLayout:
                    Label:
                        size_hint_x: 0.22
                        bold: True
                        markup: True
                        text: '[size=40][color=0000ff]Carbs[/color][/size]'
                    TextInput:
                        id: _food
                        hint_text: 'Total Carbs for meal'

                BoxLayout:
                    Label:
                        size_hint_x: 0.22
                        bold: True
                        markup: True
                        text: '[size=30][color=0000ff]Medications Taken[/color][/size]'
                    TextInput:
                        id: _meds_taken
                        hint_text: 'Please Enter Any Medications Taken'
                    Button:
                        size_hint_x: 0.15
                        text: 'Save'
                        on_press: root.save_entry()

                    Button:
                        size_hint_x: 0.15
                        text: 'Retrieve'
                        on_press: root.retrieve()

你的 retrieve 里面的 with 似乎是多余的。也许这种形式会更好:

def retrieve(self):
    db = TinyDB('entry.json')
    f = db.search(Query().time != 0)[0]
    print f

您要求提供一种简单的方法来检索用户最近的血糖值。试试这个:

f = db.search(Query().time != 0)[-1]['glucose']
print f

f = db.search(Query().time != 0)[-1]
print f['glucose']

要检索用户的五个最近的血糖值:

f=db.search(Query().time != 0)[-5:]
print ', '.join(str(x['glucose']) for x in f)