如何通过REST API和Python将干净数据插入Firebase

6 投票
2 回答
8146 浏览
提问于 2025-04-17 22:25

我有一个简单的Firebase,主要是通过Javascript来使用,效果很好。不过,我还有一个Python程序需要从现有的数据中获取信息,并且要在这些数据上进行添加或更新。我试过使用python-firebasin,它能满足我的需求,但不太可靠,经常会卡住或者出错。

所以我开始看python-firebase的REST封装。这看起来很高效,也能正常工作。但是每次我尝试用post()方法发送数据时,不仅会发送我想要的数据,还会附带一个独特的字符串,这个字符串会作为一个新的子项插入。

举个例子,如果我用Javascript这样做:

db = new Firebase('https://myfirebase.firebaseio.com/testval/');
db.transaction(function(current) { return 1; });

那么我得到的Firebase结构会是这样的:

|---testval: 1

但是当我尝试用Python Firebase REST封装做类似的事情,比如:

db = firebase.FirebaseApplication('https://myfirebase.firebaseio.com/')
db.post('/testval/',1)

我的Firebase结构就变成了这样:

|---testval:
   |---JI4BiBbICSEAnM9mDXf: 1

换句话说,它插入了一个新的子项,给了它一个新的字符串,然后再添加我的数据。有没有办法用这个REST封装在Firebase中插入或修改数据,像我用Javascript那样干净利落?不添加新的子项,也不添加这些独特的字符串?

2 个回答

1

试试这个:

db = firebase.FirebaseApplication('https://myfirebase.firebaseio.com/')
db.put('', 'testval', 1)

put这个函数需要三个参数:第一个是网址或者路径,第二个是键名或者快照名称,第三个是数据(格式是json)。

5

试试这个:

db.put(1)

db.post() 相当于 JavaScript API 中的 .push(),它会为你创建一个唯一的 ID。db.put() 则相当于 .set(),它只是用来设置数据,看起来这正是你想要的。

需要注意的是,REST API 中没有与事务相对应的功能,但你的例子只是用事务来执行 .set(),所以希望你其实不需要事务。

撰写回答