Python 程序通过 python-firebase 包可以存取 Firebase 数据库。
使用 python-firebase 包
首先必须安装 python-firebase 包,安装方法如下:
firebase 对象的方法
利用 firebase 对象方法可以对数据库进行操作,包括新增 、修改和删除数据。
fire base 提供了下列方法:
from firebase import firebase url = 'https://chiouapp01-74bde.firebaseio.com/' fb = firebase.FirebaseApplication(url, None) #fb.post('/test', "Python") fb.post('/test', {"name":"David"})
我们也可以创建 diet 类型的数据:
成功创建的数据会返回一个 diet 对象,并自动产生一个唯一编号,数据的查询、
编辑或删除都必须根据这个编号。我们可以从返回值的 name 键中取得这个编号。
from firebase import firebase url = 'https://chiouapp01-74bde.firebaseio.com' fb = firebase.FirebaseApplication(url, None) dict1 = fb.post('/test', {"name":"David"}) print(dict1["name"]) # -KTMkuwiNbE18j9zpzko
增数据前需要先检查数据是否己存在,这一点后面我们还会详细说明 。
现在,我们再做一些稍微复杂 的操作 : 在 s tud ents 节点一次创建三条数据,而且
每一条数据中都要包括 name 和 no 两个字段 。
from firebase import firebase students = [{'no':1 ,'name':'李天龙'},{'no':2,'name':'高一人'},{'no':3,'name':'洪大同'}] url = 'https://chiouapp01-74bde.firebaseio.com' fb = firebase.FirebaseApplication(url, None) for student in students: fb.post('/students', student) print("{} 存储完毕".format(student))
get 方法用 于读取指定 url 节点 的 数据 ,如果成功返回 diet 类型数据,第 2 个参
数设为 None ,会返回节点 的所有数据, 也可以设为一个 id 来返回指定 id 的数据。
例如 : 读取 students 节点 的数据 。
import time from firebase import firebase url = 'https://chiouapp01-74bde.firebaseio.com' fb = firebase.FirebaseApplication(url, None) students = fb.get('/students', None) for key,value in students.items(): print("id={} no={} name={}".format(key,value["no"],value["name"])) time.sleep(1)
首先,把所有数据读取到 data s 字典变量中 。
然后我们再定义一个从 no 键中根据 no 的值来查询该数据 id 的 自定义函数,如
果数据存在则返回其 i d (也就是 Key );否则就返回空字符串 。
利用 Ckeck:Key ()方法可以判断数据是否存在,并加以删除。 例如,若 no=l 的数据存在,就把它删除:
执行程序后,我们可看到 2 号数据己被删除 。
def CkeckKey(no): key_id="" if datas != None: for key in datas: if no==datas[key]["no"]: # 如果找到键名称,则...... key_id = key break return key_id ### 主程序从这里开始 ### from firebase import firebase url = 'https://chiouapp01-74bde.firebaseio.com' fb = firebase.FirebaseApplication(url, None) while True: datas=fb.get('/students', None) no = input("请输入序号(Enter==>停止输入)") if no=="": break key_id = CkeckKey(int(no)) if key_id != "": # 判断键是否存在 print("确定要删除{}的数据?".format(datas[key_id]["name"])) yn=input("(Y/N)?") if (yn=="Y" or yn=="y"): fb.delete('/students/'+key_id,None) print("数据删除完毕 ") else: print("{} 对应的数据不存在! ".format(no))
from firebase import firebase url = 'https://chiouapp01-74bde.firebaseio.com' fb = firebase.FirebaseApplication(url, None) fb.put(url + '/test/', data={"name":"Lin"}, name="mykey")
from firebase import firebase url = 'https://chiouapp01-74bde.firebaseio.com' fb = firebase.FirebaseApplication(url, None) fb.put(url + '/test/', data={"name":"Mary"}, name="mykey")
def CkeckKey(no): key_id="" if datas != None: for key in datas: if no==datas[key]["no"]: # 如果找到键名,则...... key_id = key break return key_id ### 主程序从这里开始 ### import time from firebase import firebase url = 'https://chiouapp01-74bde.firebaseio.com' fb = firebase.FirebaseApplication(url, None) datas=fb.get('/students', None) while True: no = input("请输入编号(Enter==>停止输入)") if no=="": break key_id = CkeckKey(int(no)) if key_id != "": # 判断键是否存在 print("原来姓名:{}".format(datas[key_id]["name"])) name=input("请输入姓名:") data = {"no":int(no),"name":name} datas[key_id]=data fb.put(url + '/students/', data=data, name=key_id) time.sleep(2) print("{} 已修改完毕 ".format(data)) else: print("{} 对应的数据不存在! ".format(no))
def CkeckKey(no): key_id="" if datas != None: for key in datas: if no==datas[key]["no"]: # 如果找到键名,则... key_id = key break return key_id ### 主程序从这里开始 ### from firebase import firebase students = [{'no':1 ,'name':'李天龙'},{'no':2,'name':'高一人'},{'no':3,'name':'洪大同'}] url = 'https://chiouapp01-74bde.firebaseio.com' fb = firebase.FirebaseApplication(url, None) datas=fb.get('/students', None) for student in students: no=student["no"] # 读取键名称 if CkeckKey(no) == "": # 判断键是否存在 fb.post('/students', student) print("{} 储存完毕".format(student))