Получить все имена пользователей, хранящиеся в базе данных TinyDB - PullRequest
0 голосов
/ 11 ноября 2018

Я новичок в TinyDB и новичок в Python.

У меня есть разные имена пользователей, хранящиеся в базе данных TinyDB, они также содержат другую информацию (возраст, адреса электронной почты и т. Д.), Однако я хочу вернуть только все имена пользователей.

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

В моем графическом интерфейсе есть кнопка «Показать все имена пользователей».

Я могу вернуть информацию о определенных пользователях, и я могу получить все информацию, хранящуюся в базе данных (db.all ()), однако я не могу просто получить все имена пользователей из всей базы данных.

Есть ли способ сделать это?

Или я смотрю на эту проблему неправильно.

Большое спасибо!

Ответы [ 2 ]

0 голосов
/ 11 ноября 2018

Сама база данных является итеративной, поэтому, возможно, это будет более элегантно и позволит избежать необходимости открывать файл JSON напрямую:

db = TinyDB('database_name.json')

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

Дает:

['John', 'Andrew']
0 голосов
/ 11 ноября 2018

Обновление: я нашел (слегка запутанный) обходной путь.

Он включает чтение файла в виде файла JSON, а затем цикл по идентификаторам словаря, остановка цикла при ключевой ошибке.

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
...