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

时间:2014-03-15 10:19:05

标签: python rest firebase

我有一个简单的Firebase,我主要通过Javascript进行交互,效果非常好。但是,我还有一个Python程序,需要从现有子节点获取数据并将数据放入/更新现有子节点。我试过python-firebasin,它可以做我想要的,但它是不可靠的(挂起,失败等)。

所以我正在看python-firebase REST包装器。这似乎很有效,而且效果很好。但是,每当我尝试发布()数据时,我不仅会得到我发布的数据,而且会得到某种与之配对的独特字符串,所有这些都是作为孩子插入的。

例如,通过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 个答案:

答案 0 :(得分:4)

请改为尝试:

db.put(1)

db.post()相当于JavaScript API中的.push(),因此它会为您创建一个唯一的ID。 db.put()等效于.set(),只会设置数据,这看起来就像你想要的那样。

请注意,REST API中没有等效事务,但您的示例只是使用事务来执行.set(),所以希望您实际上并不需要它们。

答案 1 :(得分:1)

试试这个:

5.1.1

put有三个参数:第一个是url或path,第二个是键名或快照名,第三个是数据(json)