我是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)
如何修改它以检索数据?
答案 0 :(得分:3)
pip install firebase
Firebase是为python 3及更高版本编写的,无法在python 2上正常工作。
您的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”然后执行操作