在现代应用开发中,后端即服务(BaaS)解决方案越来越受欢迎,其中Firebase是Google提供的一个流行选择。Firebase提供了包括认证、Firestore、云存储、实时数据库、托管服务、云函数、云消息和机器学习等多种服务,所有这些服务都能够根据网络流量自动扩展。Google Firestore是Google Firebase中提供的一个云端托管的NoSQL数据库,可以直接通过原生SDK连接到Web应用和移动应用。它是市场上最好的云端就绪的NoSQL数据库之一,因其简化了许多操作而深受开发者喜爱。本文将介绍如何使用Python语言连接并执行Google Firestore的基本CRUD操作。
要访问Firestore,必须先创建一个Firebase项目。可以使用Google账户免费创建Firebase项目。创建Firebase项目,请点击。登录后,点击“创建新项目”,并为项目命名。例如,将Firebase项目命名为“firestore-basics-python”。点击左侧导航栏中的“Firestore数据库”。创建数据库时,系统会提示选择生产模式或测试模式,选择测试模式并继续。接下来,选择数据库的位置,选择离最近的区域以减少延迟,并点击启用。
要连接到Google Firestore,需要安装一个名为“firebase-admin”的Python包。这个包可以使用pip像安装其他Python包一样安装。确保Python版本是3.6或以下,因为从Python 3.7开始,由于添加了异步模块,这个模块会抛出异常。如果安装了更高版本的Python,可以使用Anaconda创建一个Python 3.6的新环境。在本文中,使用的是Python 3.6.5。
pip install firebase-admin
要连接到Firestore,Firebase首先执行身份验证。要获取身份验证的凭据,请点击项目设置,然后点击“服务账户”。在“服务账户”标签页中,可以找到一个连接到Google Firebase的代码片段。选择Python作为语言并复制代码片段。复制代码片段后,点击“管理服务账户权限”。然后点击“管理密钥”,再点击“添加密钥”按钮,选择JSON文件格式并点击创建。现在已经获得了凭据,让连接到Firestore。为此,粘贴刚刚复制的代码片段,并添加下载的凭据文件的文件路径。
import firebase_admin
from firebase_admin import credentials
cred = credentials.Certificate("firestore-basics-python-fb2f3-e19b3bdf3121.json")
firebase_admin.initialize_app(cred)
db = firestore.client() # 连接到Firestore
恭喜,现在已成功连接到Firebase,可以访问Firestore服务。让开始进行一些基本的CRUD操作。
Google Firestore是一个基于文档的NoSQL数据库,因此它使用集合和文档来表示表和记录。现在尝试创建一个名为“programmer_details”的集合,并插入一个包含程序员详细信息的文档,包括姓名、年龄、国家和已知的编程语言。必须确保每个文档都有唯一的名称,以防止文档被覆盖和数据丢失。如果熟悉MongoDB或其他流行的基于文档的NoSQL数据库,可以将数据库的名称与MongoDB文档中的“_id”字段联系起来,该字段在集合中唯一标识它们。
collection = db.collection('programmer_details') # 创建集合
res = collection.document('A01').set({ # 插入文档
'name': 'Vishnu',
'age': 19,
'Country': 'India',
'Programming_languages': ['Python', 'C#', 'C++']
})
print(res)
让检查数据是否已存储在Google Firestore中。可以看到一个新的集合已经被创建,并且一个文档也已经被插入。
res = collection.document('A01').get().to_dict()
print(res)
# 输出: {'Programming_languages': ['Python', 'C#', 'C++'], 'name': 'Vishnu', 'age': 19, 'Country': 'India'}
要获取集合中的所有文档,可以直接在集合上调用get函数,但它返回一个对象列表,每个对象都需要使用“to_dict()”函数转换为字典以进行进一步处理。
res = collection.get() # 返回一个列表
for i in res: print(i.to_dict())
现在让尝试更新集合中的一个文档。让添加一个新的键值对,并修改文档中已经存在的键的值。为此,可以直接使用“update()”函数。
res = collection.document('A01').update({
'State': 'Chennai',
'age': 21
})
print(res)
res = collection.document('A01').delete()
print(res)