TypeError:“引用”对象不可迭代

时间:2019-11-20 17:57:26

标签: python firebase firebase-realtime-database

有人可以帮助我吗?

我想从 Firebase实时数据库

检索数据

我的 main.py

import firebase_admin
from firebase_admin import credentials
from firebase_admin import db

cred = credentials.Certificate ("serviceAccountKey.json")
firebase_admin.initialize_app (cred, {"databaseURL": "https://myDatabase.firebaseio.com/"})

ref = db.reference ("user")

for u in ref:
     print (ref.get())

我收到这样的错误消息

Traceback (most recent call last):
   File "main.py", line 10, in <module>
     for u in ref:
TypeError: 'Reference' object is not iterable

我只是通过使用Python学习Firebase。 希望您能提供帮助,谢谢:)

2 个答案:

答案 0 :(得分:2)

根据您的代码,您试图在数据库中的/user键下打印每个用户的数据。代码db.reference("user")返回一个对象,该对象引用数据库中的某个位置并且不保存任何数据。要获取每个用户的列表,您可以使用以下代码的变体:

ref = db.reference("user")

data = ref.get() # get data from db

for u in data # iterate children of data
   print(u)

答案 1 :(得分:2)

此答案是为了帮助您将来自己调试此类错误。 :) 错误告诉您您有一个“ TypeError”,您可能应该做的第一件事是通过执行print(type(ref))检查引用的类型,这是可迭代的吗?极有可能,这就是为什么您会收到错误消息。下一步应该是在线检查文档,还是在本地检查ref提供的功能。您可以通过启动一个新的Shell,在for循环和dir(ref)之前键入所有命令来完成此操作。您将在此处看到各种各样的功能,其中似乎最有名的一个功能可以“获取”数据? get当然。妳去:)