【问题标题】:Cant find my firebase real-time database when trying to import data in python尝试在python中导入数据时找不到我的firebase实时数据库
【发布时间】:2021-11-13 19:03:53
【问题描述】:
import pandas as pd
import firebase_admin
from firebase_admin import credentials, firestore

cred = credentials.Certificate("crt")
firebase_admin.initialize_app(cred,{
'databaseURL': 'url'
})

db = firestore.client()
actor_ref = db.collection('actors')

# Import data
df = pd.read_csv("./hw1_datasets/actor.csv")
tmp = df.to_dict(orient='records')
list(map(lambda x: actor_ref.add(x), tmp))

我正在运行此脚本以将 csv 导入我的 Firebase 实时数据库,但它一直说该项目不存在,或者它不包含活动的 Cloud Datastore 或 Cloud Firestore 数据库。我使用相同的 google 帐户创建了一个 firebase 实时数据库,但我不确定为什么它说没有数据库。 Google Cloud 不支持 Firebase 的实时数据库吗?任何帮助将不胜感激

【问题讨论】:

    标签: python firebase firebase-realtime-database google-cloud-firestore


    【解决方案1】:

    问题出在:

    firebase_admin.initialize_app(cred,{
    'databaseURL': 'url'
    })
    

    databaseURL 是对实时数据库的引用,您的代码似乎不足以找到项目的 Firestore 数据库。如setting up Python access to Firestore 上的文档所示,您将(还)需要传递项目 ID 才能访问 Firestore:

    firebase_admin.initialize_app(cred, {
      'projectId': project_id,
    })
    
    db = firestore.client()
    

    【讨论】:

    • 看起来它仍然对我不起作用,你知道我是否还有其他可能遗漏的步骤?
    【解决方案2】:

    您的问题似乎混淆了 Firebase 实时数据库和 Firestore。虽然您提到您正在使用 Firebase 实时数据库,但您的 python 脚本用于将数据导入 Firestore。请注意,Firestore 和 Firebase 实时数据库是两个不同的数据库。

    您收到的错误消息表明该项目没有 Firestore 数据库。因此,要解决该错误,请转到 Firebase 控制台并在 Firestore 中创建一个数据库。创建 Firestore 数据库后,添加一个名为“actors”的集合。您可以按照here 中提到的步骤在 Firebase 控制台中创建 Firestore 数据库。

    如果您想使用 Firebase 实时数据库,您必须在 python 脚本中以不同的方式对其进行初始化。您可以参考以下内容来了解​​如何初始化 Firebase 实时数据库。

    首先,您必须从 firebase_admin 导入“db”,如下所示

    from firebase_admin import db
    

    然后,您必须通过获取 serviceAccountKey.json 文件来创建凭据对象,您可以在 Firebase 控制台的“项目概述”>“项目设置”页面中生成该文件

    cred = credentials.Certificate('path/to/serviceAccountKey.json')
    

    接下来你要初始化数据库如下-

    firebase_admin.initialize_app(cred, {
        'databaseURL': 'https://databaseName.firebaseio.com'
    })
    

    现在要访问 Firebase 实时数据库,您必须创建如下引用

    ref = db.reference('databaseName')
    

    有关如何初始化 Firebase 实时数据库的更多详细信息是 here

    要读取数据并将数据保存到 Firebase 实时数据库,您可以分别参考 this documentthis document

    【讨论】:

    • 非常感谢,我以为代码可能是针对 firestore 数据库的,但找不到如何连接实时数据库。我会仔细阅读您提供的文档,再次感谢!
    猜你喜欢
    • 2021-08-16
    • 2022-08-17
    • 2021-10-13
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 2020-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多