如何将信息作为数组python保存到json
Posted
技术标签:
【中文标题】如何将信息作为数组python保存到json【英文标题】:How to save information to json as array python 【发布时间】:2016-04-22 19:09:14 【问题描述】:我正在用 python ad kivy 制作一个应用程序,让用户输入时间、血糖、碳水化合物和服用的药物。目前,我将用户输入的信息保存到 TinyDB 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()
【问题讨论】:
【参考方案1】: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)
【讨论】:
我如何将最后一个附加到标签(self.fe.text)而不是打印? 我不熟悉kivy,所以不能肯定。也许用return f['glucose']
替换print f['glucose']
?
其实只是用普通的打印功能没有报错但是什么都没有打印
我想通了。它只是self.fes.text = ', '.join(str(x['Glucose']) for x in f)
以上是关于如何将信息作为数组python保存到json的主要内容,如果未能解决你的问题,请参考以下文章