如何从 Firebase 实时数据库中获取密钥
How to get just keys from Firebase Realtime Databse
我在 Firebase 的实时数据库中有以下设置:
- my_db_rtdb
-- daily_data
-- A
+ 0
+ 1
+ 2
+ 3
-- K
+ 0
+ 1
+ 2
-- R
+ 0
+ 1
+ 2
+ 3
-- S
+ 0
+ 1
实际的数据树相当大。
每个daily_data/<item>
可以有多个孩子,其中<item>
是A
、K
等,如上所示。
从这个设置中,我需要获取 daily_data 下的键列表。在上面的特定示例中,我需要编写一个 Python 脚本,它将给我列表 ["A", "K", "R", "S"]
.
而且我想在不下载所有内容的情况下执行此操作,因为数据非常大。
如何在 Python 中实现此目的?我无法通过阅读文档向我解释清楚。
您需要的是所谓的“浅查询”,其结果将包含当前节点的值,但不包含任何嵌套在其下的内容。这种类型的查询只能在 select 没有缓存层的 SDK 中访问,例如 Admin SDK,或者您可以通过 REST API directly 访问这些查询。根据您的用例,考虑构建索引。
import firebase_admin
from firebase_admin import db
# ... init the SDK ...
ref = db.reference('my_db_rtdb/daily_data') # may only need to be /daily_data (unclear from your question)
# first arg must be False for shallow queries
# ref.get(includeEtag, shallowQuery)
valueAtRef = ref.get(False, True) # as a dict
print(valueAtRef) # print the dict
print([*valueAtRef]) # get the keys as a list
ref#get(etag, shallow)
的文档可以在 Python Admin SDK Reference 中找到。
我在 Firebase 的实时数据库中有以下设置:
- my_db_rtdb
-- daily_data
-- A
+ 0
+ 1
+ 2
+ 3
-- K
+ 0
+ 1
+ 2
-- R
+ 0
+ 1
+ 2
+ 3
-- S
+ 0
+ 1
实际的数据树相当大。
每个daily_data/<item>
可以有多个孩子,其中<item>
是A
、K
等,如上所示。
从这个设置中,我需要获取 daily_data 下的键列表。在上面的特定示例中,我需要编写一个 Python 脚本,它将给我列表 ["A", "K", "R", "S"]
.
而且我想在不下载所有内容的情况下执行此操作,因为数据非常大。
如何在 Python 中实现此目的?我无法通过阅读文档向我解释清楚。
您需要的是所谓的“浅查询”,其结果将包含当前节点的值,但不包含任何嵌套在其下的内容。这种类型的查询只能在 select 没有缓存层的 SDK 中访问,例如 Admin SDK,或者您可以通过 REST API directly 访问这些查询。根据您的用例,考虑构建索引。
import firebase_admin
from firebase_admin import db
# ... init the SDK ...
ref = db.reference('my_db_rtdb/daily_data') # may only need to be /daily_data (unclear from your question)
# first arg must be False for shallow queries
# ref.get(includeEtag, shallowQuery)
valueAtRef = ref.get(False, True) # as a dict
print(valueAtRef) # print the dict
print([*valueAtRef]) # get the keys as a list
ref#get(etag, shallow)
的文档可以在 Python Admin SDK Reference 中找到。