如何获取firebase数据?

时间:2017-12-27 02:06:57

标签: python firebase firebase-realtime-database

我是python和firebase的新手,我正试图展开我的firebase数据库。

我有这种格式的数据库

enter image description here

每只猫都有数以千计的数据。我想要的只是获取猫的名字并将它们放在一个数组中。例如,我希望输出为['cat1','cat2'....]

我正在使用本教程 http://ozgur.github.io/python-firebase/

from firebase import firebase
firebase = firebase.FirebaseApplication('https://your_storage.firebaseio.com', None)
result = firebase.get('/Data', None)

上述代码的问题是它将尝试获取Data下的所有数据。我怎么才能取“猫”?

3 个答案:

答案 0 :(得分:0)

Firebase实时数据库为one big JSON tree

  

当您在数据库中的某个位置获取数据时,也会检索   它的所有子节点。

最佳做法是denormalize your data,为同一数据创建多个位置(节点):

  

很多时候,您可以使用查询来检索数据,从而对数据进行非规范化   数据子集

在您的情况下,您可以创建名为" categories"的第二个节点。你在哪里列出"只有"类别名称。

/cat1
    /...
/cat2
    /...
/cat3
    /...
/cat4
    /...
/categories
   /cat1
   /cat2
   /cat3
   /cat4

在这种情况下,您可以使用update() method同时写入多个位置。

答案 1 :(得分:0)

我正在浏览pyrebase文档。因此,我们可能只从某个路径中提取密钥。

  

要仅返回特定路径上的键,请使用shallow()方法。

all_user_ids = db.child("users").shallow().get()

在你的情况下,它会是这样的:

firebase = pyrebase.initialize_app(config)
db = firebase.database()

allCats = db.child("data").shallow().get()

如果它没有用,请告诉我。

答案 2 :(得分:0)

如果您想将猫内的值作为列,请尝试使用pyrebasepip install pyrebase / cmd上使用anaconda prompt(如果您没有,则优先使用import pyrebase config {"apiKey": yourapikey "authDomain": yourapidomain "databaseURL": yourdatabaseurl, "storageBucket": yourstoragebucket, "serviceAccount": yourserviceaccount } 在您的环境路径上设置PIP或Python。安装后:

def connect_firebase():
# add a way to encrypt those, I'm a starter myself and don't know how
username: "usernameyoucreatedatfirebase"
password: "passwordforaboveuser"

    firebase = pyrebase.initialize_app(config)
    auth = firebase.auth() 

    #authenticate a user > descobrir como não deixar hardcoded
    user = auth.sign_in_with_email_and_password(username, password)

    #user['idToken']
    # At pyrebase's git the author said the token expires every 1 hour, so it's needed to refresh it
    user = auth.refresh(user['refreshToken'])

    #set database
    db = firebase.database()

    return db

注意:您可以在Firebase的控制台上找到上述所有信息: https://console.firebase.google.com/project/>>>您的项目>>>点击图标“<'/>”使用“将firebase添加到您的网络应用程序”标签

回到代码......

制作一个简洁的定义,以便将其存储到py文件中:

.py

好的,现在将其保存为一个整洁的auth.py文件

NEXT,在您的新笔记本或主.py上,您将从现在开始导入这个我们称之为 from auth import * # add do a variable db = connect_firebase() #and now the hard/ easy part that took me a while to figure out: # notice the value inside the .child, it should be the parent name with all the cats keys values = db.child('cats').get() # adding all to a dataframe you'll need to use the .val() data = pd.DataFrame(values.val()) 的新.py文件...

print(data.head())

就是这样, Name Value Date Time 0 FAN_RFB 1 2018-04-07 02:34:43 1 KW_TOTAL 186 2018-04-08 23:59:58 2 ME_POW_1 8618 2018-04-08 23:59:56 3 ME_POW_2 8315 2018-04-08 23:59:56 4 FAN_RFB 1 2018-04-07 02:34:43 5 KW_TOTAL 185 2018-04-09 00:00:07 6 ME_POW_1 8467 2018-04-09 00:00:09 7 ME_POW_2 8350 2018-04-09 00:00:09 8 FAN_RFB 1 2018-04-07 02:34:43 9 KW_TOTAL 182 2018-04-09 00:00:15 10 ME_POW_1 8783 2018-04-09 00:00:16 11 ME_POW_2 8422 2018-04-09 00:00:16 12 FAN_RFB 1 2018-04-07 02:34:43 13 KW_TOTAL 184 2018-04-09 00:00:26 14 ME_POW_1 8545 2018-04-09 00:00:28 15 ME_POW_2 8370 2018-04-09 00:00:28 检查值/列是否是预期的位置。