Tinydb полностью помещается в память, поэтому нормально звонить .all(), получать данные и делать некоторые статистические данные. Вот код, который сбрасывает структуру БДА в соответствии с таблицы по типу документа, определяется набором ключей:
from tinydb import TinyDB
from collections import Counter
db = TinyDB('db.json')
for table in db.tables():
contents = db.table(table).all()
schema = Counter(frozenset(doc.keys()) for doc in contents)
print('table %s (documents %d):' % (table, sum(schema.values())))
for fields, count in schema.iteritems():
print(' document (count %d):' % count)
print('\n'.join(' %s' % field for field in fields))
Пример вывод:
table _default (documents 36):
document (count 15):
foo
bar
document (count 21):
int
char
Если вы знаете, что есть только один типа документа, вы могли бы всегда просто сделайте быстрый взлом, например 'TinyDB ('friends.json'). table ('_ default'). all() [0] .keys()' – Hexatonic