如何使用Python从Firebase检索数据

时间:2016-04-10 09:32:10

标签: python get firebase python-requests patch

我是Python的新手,我想使用Python连接到Firebase。我可以使用put()patch()成功添加和修改Firebase,但我找不到从Firebase检索数据的方法。

代码:

import serial
import time
import requests
import json

firebase_url = 'https://testing1639.firebaseio.com'

#Connect to Serial Port for communication
ser = serial.Serial('/dev/ttyUSB0', 9600)

#Setup a loop to send temperature values at fixed intervals in seconds
fixed_interval = 2

while 1:
    try:
         #Temperature value obtained from Arduino + LM35 Temp Sensor
         temperature_c = ser.readline()
         #Current time and date
         time_hhmmss = time.strftime('%H:%M:%S')
         date_mmddyyyy = time.strftime('%d/%m/%Y')

         #Current location name
         temperature_location = 'Mumbai-Kandivali' ;

         print temperature_c + ',' + time_hhmmss + ',' + date_mmddyyyy + ',' + temperature_location

         #Insert record
         data = {'date':date_mmddyyyy,'time':time_hhmmss,'value':temperature_c}

         result = requests.post(firebase_url + '/' + temperature_location + '/temperature.json', data=json.dumps(data))

         #Insert record
         print 'Record inserted. Result Code = ' + str(result.status_code) + ',' + result.text
         time.sleep(fixed_interval)

    except IOError:
        print('Error! Something went wrong.')
        time.sleep(fixed_interval)

如何修改它以检索数据?

2 个答案:

答案 0 :(得分:3)

安装

pip install firebase

Python版本

Firebase是为python 3及更高版本编写的,无法在python 2上正常工作。

将Firebase添加到您的应用程序

您的Google的Firebase配置数据可在Firebase>设置>项目设置滚动到底部>添加到网络应用>配置

中找到

仅用于基于用户的身份验证,我们可以创建以下配置:

from firebase import Firebase

config = {
  "apiKey": "apiKey",
  "authDomain": "projectId.firebaseapp.com",
  "databaseURL": "https://databaseName.firebaseio.com",
  "storageBucket": "projectId.appspot.com"
}

firebase = Firebase(config)

身份验证

sign_in_with_email_and_password()方法将返回用户数据,其中包括可用于遵守安全规则的令牌。

以下每种方法都接受用户令牌:get()push()set()update()remove()stream()。 / p>

# Get a reference to the auth service
auth = firebase.auth()

# Log the user in
user = auth.sign_in_with_email_and_password(email, password)

# Get a reference to the database service
db = firebase.database()

# data to save
data = {
    "name": "Joe Tilsed"
}

# Pass the user's idToken to the push method
results = db.child("users").push(data, user['idToken'])

数据库

您可以使用child()方法来建立数据的路径。

db = firebase.database()
db.child("users").child("Joe")

保存数据

要使用唯一的,自动生成的,基于时间戳的密钥保存数据,请使用push()方法。

data = {"name": "Joe Tilsed"}
db.child("users").push(data)

要创建自己的密钥,请使用set()方法。下例中的键是“ Joe”。

data = {"name": "Joe Tilsed"}
db.child("users").child("Joe").set(data)
更新

要更新现有条目的数据,请使用update()方法。

db.child("users").child("Joe").update({"name": "Joe W Tilsed"})
去掉

要删除现有条目的数据,请使用remove()方法。

db.child("users").child("Joe").remove()

检索数据

查询返回FirebaseResponse对象。在这些对象上调用val()会返回查询数据。

users = db.child("users").get()
print(users.val())

>> {"Joe": {"name": "Joe Tilsed"}, "Syd": {"name": "Sydney Cox"}}

调用key()返回查询数据的密钥。

user = db.child("users").get()
print(user.key())

>> users

返回一个对象列表,可以在每个对象上调用val()key()

all_users = db.child("users").get()
for user in all_users.each():
    print(user.key())

    >> Joe 

    print(user.val())   

    >> {name": "Joe Tilsed"}
得到

要从路径返回数据,只需调用get()方法。

all_users = db.child("users").get()

希望这会有所帮助。完整文档:https://pypi.org/project/firebase/

答案 1 :(得分:0)

我有类似的东西正在运作

firebase_url ='https://xyz.firebaseio.com/'

client_name ='Mumbai-Kandivali'

类MainPage(webapp.RequestHandler):

def get(self):
    self.response.headers['Content-Type'] = 'application/json'     
    url = firebase_url + '/' + client_name + '/temperature.json'        
    json_object = json.load(urllib2.urlopen(url))
    json.dump(json_object,  self.response.out ) #this will go to frontend

希望这个帮助...但是我正在努力在python中获取“import firebase”然后执行操作