【问题标题】:Get all usernames stored in TinyDB database获取存储在 TinyDB 数据库中的所有用户名
【发布时间】:2018-11-11 08:52:43
【问题描述】:

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

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

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

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

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

有没有办法做到这一点?

还是我看错了这个问题。

非常感谢!

【问题讨论】:

    标签: python tinydb


    【解决方案1】:

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

    db = TinyDB('database_name.json')
    
    usernames = [r['Username'] for r in db]
    

    给予:

    ['John', 'Andrew']
    

    【讨论】:

    • 完美运行。非常感谢威尔!
    【解决方案2】:

    更新:我找到了一个(有点复杂的)解决方法。

    它涉及将文件作为 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-26
      • 1970-01-01
      • 2014-03-01
      • 1970-01-01
      • 2021-09-05
      • 2020-06-13
      • 2019-08-05
      相关资源
      最近更新 更多