Jak*_*zuk 1 python firebase firebase-realtime-database firebase-admin
众所周知,Firebase 实时数据库是一棵巨大的 JSON 树:
由于 Firebase 实时数据库允许嵌套深度高达 32 级的数据,您可能会认为这应该是默认结构。但是,当您在数据库中的某个位置获取数据时,您还会检索其所有子节点。
现在我需要进入的数据库具有以下结构:
root
|
|- category 1
| |
| |
| |-sub category 1
| | |
| | |- record 1
| | | |- (...)
| | |
| | |- record 2
| | | |- (...)
| | |
| | |- (...) record n
| |
| |
| |- (...) sub category n
|
| - (...) category n
Run Code Online (Sandbox Code Playgroud)
每个类别有数千个子类别,每个子类别有数千条记录。
有什么方法可以使用 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())
Run Code Online (Sandbox Code Playgroud)
Python Admin SDK 确实支持对引用的浅读。
print(ref.get(shallow=True))
请参阅文档:https : //firebase.google.com/docs/reference/admin/python/firebase_admin.db#reference