База данных Python Firebase мелкое получение данных - PullRequest
0 голосов
/ 18 октября 2018

Как мы знаем, база данных Firebase Realtime - это одно большое дерево JSON :

Поскольку база данных Firebase Realtime позволяет вкладывать данные глубиной до 32 уровней, у вас может возникнуть искушение:думаю, что это должна быть структура по умолчанию.Однако, когда вы извлекаете данные из местоположения в вашей базе данных, вы также извлекаете все его дочерние узлы.

Прямо сейчас база данных, в которую мне нужно попасть, имеет следующую структуру:

root
|
|- category 1
|  |
|  |
|  |-sub category 1
|  |  |
|  |  |- record 1
|  |  |  |- (...)
|  |  |
|  |  |- record 2
|  |  |   |- (...)
|  |  |
|  |  |- (...) record n
|  |
|  |
|  |- (...) sub category n
|
| - (...) category n

в каждой категории есть тысячи подкатегорий, а в каждой подкатегории тысячи записей.

Есть ли способ перебора базы данных реального времени с использованием python и официального firebase-admin python SDK иполучать только мелкие копии (или ключи) базы данных, чтобы затем извлекать определенные строки?

Я бы не хотел, чтобы архитектор БД переделывал БД для денормализации данных записи на другой узел

прямо сейчас.Мы нашли способ извлечения ключей со всеми соответствующими данными, используя официальный 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())

1 Ответ

0 голосов
/ 18 октября 2018

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

print(ref.get(shallow=True))

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

...