База данных Python Firebase мелкое получение данных

1

Как известно, 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())
Теги:
firebase
firebase-admin
firebase-realtime-database

1 ответ

2
Лучший ответ

Python Admin SDK поддерживает мелкие чтения ссылок.

print(ref.get(shallow=True))

См. Документацию: https://firebase.google.com/docs/reference/admin/python/firebase_admin.db#reference

  • 0
    Здорово. Означает ли это, что Python SDK работает поверх REST API?
  • 0
    Да, Python и Go SDK используют API REST для базы данных.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню