Как известно, Firebase Realtime Database - это одно большое дерево JSON:
Поскольку база данных Firebase Realtime позволяет вложенным данным на глубину до 32 уровней, может возникнуть соблазн подумать, что это должна быть структура по умолчанию. Однако при получении данных в месте в базе данных вы также извлекаете все дочерние узлы.
Прямо сейчас в базе данных мне нужно иметь следующую структуру:
root
|
|- category 1
| |
| |
| |-sub category 1
| | |
| | |- record 1
| | | |- (...)
| | |
| | |- record 2
| | | |- (...)
| | |
| | |- (...) record n
| |
| |
| |- (...) sub category n
|
| - (...) category n
каждая категория имеет тысячи подкатегорий внутри, и каждая подкатегория имеет тысячи записей.
Есть ли способ итерации через базу данных Realtime с использованием python и официального SDK firebase-admin python и получить только мелкие копии (иначе называемые) базы данных, чтобы затем получить определенные строки?
Я хотел бы избежать указания архитектора БД для реконфигурации БД для денормализации данных записи на другой узел
прямо сейчас я нашел способ получить ключи со всеми соответствующими данными в них, используя официальный SDK:
import firebase_admin
from firebase_admin import credentials
from firebase_admin import db
# Fetch the service account key JSON file contents
cred = credentials.Certificate('firebase-adminsdk.json')
# Initialize the app with a service account, granting admin privileges
firebase_admin.initialize_app(cred, {
'databaseURL': 'https://<app_name>.firebaseio.com/'
})
ref = db.reference('category 1')
print(ref.get())
Python Admin SDK поддерживает мелкие чтения ссылок.
print(ref.get(shallow=True))
См. Документацию: https://firebase.google.com/docs/reference/admin/python/firebase_admin.db#reference