zoukankan      html  css  js  c++  java
  • 吴裕雄--天生自然python学习笔记:python 建立 Firebase 数据库连接

    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))
  • 相关阅读:
    vs2005 水晶报表横向打印Bug
    petshop4.0 详解之七(PetShop表示层设计)
    petshop4.0 详解之八(PetShop表示层设计)
    在VS2005中使用VSS2005
    用DataFormatString格式化GridView
    GridView的高级用法
    水晶报表 打印时出现错误提示:出现通信错误。将停止打印
    POJ1182 食物链[并查集]
    并查集的基础知识
    HDOJ1269 迷宫城堡[强连通分量]
  • 原文地址:https://www.cnblogs.com/tszr/p/12034673.html
Copyright © 2011-2022 走看看