Python 无法使用推入式Firebase实时数据库写入多个JSON记录
我有一个大约3 GB的巨大JSON文件,其中包含多条JSON记录(每条记录每行),如下所示:Python 无法使用推入式Firebase实时数据库写入多个JSON记录,python,firebase,firebase-realtime-database,Python,Firebase,Firebase Realtime Database,我有一个大约3 GB的巨大JSON文件,其中包含多条JSON记录(每条记录每行),如下所示: {"deviceId":"52b336d46d01bde9","dow":"Thursday","downloadFlag":"N"} {"deviceId":"8B0FCD5F-B62A-5351-0000-000000000000","dow":"Thursday"} {"deviceId":"969D8075-9C9B-DE14-0000-000000000000","dow":"jeudi","
{"deviceId":"52b336d46d01bde9","dow":"Thursday","downloadFlag":"N"}
{"deviceId":"8B0FCD5F-B62A-5351-0000-000000000000","dow":"Thursday"}
{"deviceId":"969D8075-9C9B-DE14-0000-000000000000","dow":"jeudi","downloadFlag":"Y"}
我必须在Firebase Realtime DB中编写这些JSON记录,我正在尝试使用下面提到的代码通过Python实现这些记录:
import firebase_admin
from firebase_admin import credentials
from firebase_admin import db
import json
cred = credentials.Certificate('./test.json')
app = firebase_admin.initialize_app(cred, {'databaseURL' : 'https://test.firebaseio.com/'})
user_activities_sample = db.reference("userActivities")
new_post_ref = user_activities_sample.push()
f = open("test_save.json", "r")
for line in f.readlines():
data = json.loads(line)
print data
new_post_ref.set(data)
问题是只有JSON文件中的最后一条记录被写入数据库。
我的代码中是否有任何错误,或者我对推送的理解是否有误
非常感谢您的帮助。您的代码实际上在做什么,每次使用
set()
方法时都会覆盖这些值
因为new\u post\u ref=user\u activities\u sample.push()
此行将数据库引用
存储在变量new\u post\u ref
中(除非进行更改,否则将保持不变),并且每次都在ref
上执行。这就是为什么firebase
会覆盖数据库中键new\u post\u ref
处的值,因此,这将只保存最后一个set()
ed值
因此,要纠正这种行为,每次在数据库中设置一个新值时,必须push()
,如下所示:
import firebase_admin
from firebase_admin import credentials
from firebase_admin import db
import json
cred = credentials.Certificate('./test.json')
app = firebase_admin.initialize_app(cred, {'databaseURL' : 'https://test.firebaseio.com/'})
user_activities_sample = db.reference("userActivities")
f = open("test_save.json", "r")
for line in f.readlines():
data = json.loads(line)
print data
user_activities_sample.push().set(data) # now there will be new ref everytime you add new value to database
这样,你的问题就会被根除