如何通过REST API和Python将干净数据插入Firebase
我有一个简单的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(),所以希望你其实不需要事务。