获取存储在TinyDB数据库中的所有用户名

时间:2018-11-11 08:52:43

标签: python tinydb

我是TinyDB的新手,也是Python的新手。

我在TinyDB数据库中存储了各种用户名,它们还存储了其他信息(年龄,电子邮件地址等),但是,我只希望返回所有用户名。

{"_default": {"1": {"Username": "John", "Age": "30"}, "2": {"Username": 
"Andrew", "Age":"40", "Email": "example@example.com"}}}

我的GUI将具有“显示所有用户名”按钮。

我可以返回有关特定用户的信息,并且可以获得 all 存储在数据库中的信息(db.all()),但是我似乎无法从整个数据库中获取所有用户名。

有没有办法做到这一点?

或者我是用错误的方式看待这个问题。

非常感谢!

2 个答案:

答案 0 :(得分:0)

更新:我发现了一个(稍微复杂的)解决方法。

它涉及将文件读取为JSON文件,然后循环访问字典ID,并在出现键错误时停止循环。

with open("database_name.json", "r") as read_file:
data=json.load(read_file)

try:
    current_number = 1
    while current_number <=100000000000:
        current_number = str(current_number)
        print(data['_default'][current_number]['Username'])
        current_number = int(current_number)
        current_number += 1
except:
    KeyError

答案 1 :(得分:0)

数据库本身是可迭代的,因此也许这样做会更优雅,并且避免直接打开JSON文件:

db = TinyDB('database_name.json')

usernames = [r['Username'] for r in db]

礼物:

['John', 'Andrew']