Python Firebase数据库浅获取数据

时间:2018-10-18 09:39:09

标签: python firebase firebase-realtime-database firebase-admin

我们知道,Firebase实时数据库is one big JSON tree

  

由于Firebase实时数据库最多可嵌套32个级别的数据,因此您可能会以为这应该是默认结构。但是,当您在数据库中的某个位置获取数据时,也会检索其所有子节点。

现在我需要进入的数据库具有以下结构:

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

每个类别中有数千个子类别,每个子类别都有成千上万的记录。

是否有任何方法可以使用python和官方firebase-admin python SDK遍历Realtime Database并仅获取数据库的浅表副本(也称为键),然后获取某些行?

我想避免告诉数据库架构师重塑数据库以将记录数据非规范化到另一个节点

现在我只找到了一种使用官方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 :(得分:2)

Python Admin SDK确实支持对引用的浅读。

print(ref.get(shallow=True))

请参阅文档:https://firebase.google.com/docs/reference/admin/python/firebase_admin.db#reference