仅使用Python创建一个AppWrite数据库
#编程 #python #云 #database

AppWrite是一个开源后端平台,可减少开发人员从头开始构建后端服务器的工作和时间。这是一种后端 - 服务解决方案,可处理Web,移动和flutter应用程序的后端任务。

AppWrite提供数据库,身份验证,存储,实时通信以及许多其他服务。

在Web应用程序中创建和配置数据库很耗时,本教程将使用AppWrite的Python SDK(软件开发套件)或软件包以简单的步骤进行操作。

如果在AppWrite Cloud中设置数据库之前,您不想处理初步任务,则可以跳到数据库创建部分。

收集所需信息

在开始在AppWrite Cloud上创建数据库之前,您必须首先从AppWrite Console获取以下凭据:

  • appwrite api键

  • appwrite项目ID

  • appwrite cloud api端点

步骤1:获取项目ID

  • 要访问AppWrite控制台,在AppWrite Cloud(https://cloud.appwrite.io/)上创建一个帐户,或者如果您已经有一个帐户。

  • 单击“创建项目” 按钮,给您的项目命名,然后保存“项目ID”

Project Creation and Saving Project ID

步骤2:获取API密钥

  • 创建一个新项目后,向下滚动并单击“ API键” 按钮。

  • 填写API名称并选择到期时间,然后单击“ Next” 按钮,然后添加范围“数据库” ,最后单击“创建” 按钮。

API Key Setup

  • 向下滚动AppWrite控制台,然后单击“ API键” “ Integrations” e节,然后是您新创建的 api名称< /strong>。

  • 单击“ API密钥秘密” 按钮。

  • ,复制项目的API键

API Key Secret

安装AppWrite的Python软件包

使用Python在AppWrite Cloud上创建数据库需要一个名为appwrite的Python软件包,该软件包可提供API访问以与AppWrite后端进行交互并执行各种任务。

打开一个终端窗口并键入以下命令,以使用pip安装Python软件包pip

pip install appwrite

创建数据库

在appwrite云上创建数据库涉及简单的步骤。收集了所有必需的凭据,让我们使用Python创建一个数据库。

导入所需的模块

from appwrite.client import Client
from appwrite.services.databases import Databases
from appwrite.id import ID
import os
from dotenv import load_dotenv

from appwrite.client import Client:要与appwrite api进行交互,Client类是从appwrite.client模块导入的。 Client类将允许您配置API密钥,项目ID和API端点,以制作AppWrite Backend请求。

from appwrite.services.databases import Databases:要使用AppWrite Cloud上的数据库,Databases类是从appwrite.services.databases模块导入的。

from appwrite.id import ID:要生成可以在AppWrite中使用的唯一ID,ID类是从appwrite.id模块导入的。

import os:要与操作系统交互,导入了os模块。

from dotenv import load_dotenv:将环境变量加载到Python文件。如果不安装库,则可以使用pip install python-dotenv安装。

配置AppWrite客户端以访问API

""" Configuring Appwrite Client """
# Instantiating Appwrite Client
client = Client()

# To load environment variables
load_dotenv()

# Configuring Appwrite Client
(client
 # Setting API Endpoint
 .set_endpoint('https://cloud.appwrite.io/v1')
 # Setting Project ID
 .set_project(os.getenv('PROJECT_ID'))
 # Setting API Key
 .set_key(os.getenv('API_KEY'))
 )

实例化appwrite客户端Client类实例是创建并存储在client变量中的。

使用load_dotenv()函数将环境变量(PROJECT_IDAPI_KEY)加载到脚本中。

设置API端点:AppWrite客户端的set_endpoint()方法用于将API端点设置为url 'koude24'

设置项目ID :AppWrite客户端的set_project()方法用于通过使用os.getenv('PROJECT ID')从环境变量'PROJECT ID'检索项目ID。

设置API键:同样,使用set_key()方法设置API键,并从环境变量'API_KEY'中检索到os.getenv('API_KEY')

创建一个新数据库

""" Creating Database """
# Initializing databases service
databases = Databases(client)

# To generate unique database ID
db_id = ID.unique()

# Creating a new database
create_db = databases.create(db_id, 'BooksDB')
print("Database Successfully Created.")

使用Databases(client)创建Databases实例,并保存在databases变量中。这可以与AppWrite数据库API和执行各种数据库相关的任务进行交互。

ID.unique()方法用于生成数据库的唯一ID,然后将其存储在db_id变量中。

然后,代码通过调用databases.create()方法来创建数据库,该方法采用两个参数:在这种情况下,数据库ID,db_id和数据库名称,在这种情况下为'BooksDB'

如果运行文件,则将创建数据库,并在AppWrite Cloud上可见。

Database created

创建数据库是不够的,特别是如果您打算将其连接到Web应用程序。这是CRUD操作所必需的,例如添加新数据,更新它,读取它甚至删除它。

要创建一个用于数据存储的功能齐全的数据库,必须创建以下内容:

  • 收集

  • 属性

  • 文档

创建收藏

AppWrite数据库中的集合是数据存储容器,类似于传统数据库中的表。

您可以在单个AppWrite数据库中创建多个集合来存储和管理各种来源的数据,这将有助于数据管理。

"""Creating Collections"""
# Database ID
database_id = create_db['$id']
# For Generating Unique Collection ID
collection_id = ID.unique()

# Creating a New Collection
new_collection = databases.create_collection(database_id=database_id,
                                             collection_id=collection_id,
                                             name='Books')

print('Collection Successfully Created.')

使用create_db['$id']检索数据库ID并存储在database_id变量中。

ID.unique()方法用于为数据库中的集合生成唯一的ID,并将结果ID存储在collection_id变量中。

要创建一个新集合,使用了databases.create_collection()方法。它接受三个必需的参数:database_id,代表将创建集合的数据库ID,collection_id,一个独特的ID,可确保与现有集合没有冲突,而name则指定了新集合的名称,即"Books"在这种情况下。

Collection Created

创建属性

收集完成后,下一步是创建属性。该属性定义了数据的模式。属性为不同的types,您可以根据要求选择。

属性与传统数据库表中的字段相似,其中数据存储在相应的字段下。这样可以确保AppWrite数据库中文档的标准化结构。

由于数据库适用于 book 详细信息,因此该模式如下:

  • id -integer:用于存储本书的ID。

  • image -url:图像图像

  • title -string:本书的标题

  • author -string:本书的作者

  • genre -string:这本书的类型

该属性将基于上面列出的字段生成。

"""Creating Attributes"""
# Collection ID of Book
c_id = new_collection['$id']

""" Creating integer attribute """
# ID Attribute
book_id = databases.create_integer_attribute(database_id=database_id,
                                             collection_id=c_id,
                                             key="id",
                                             required=True)

""" Creating url attribute """
# URL Attribute
book_url = databases.create_url_attribute(database_id=database_id,
                                          collection_id=c_id,
                                          key="image",
                                          required=True)

""" Creating string attribute """
# Title Attribute
book_title = databases.create_string_attribute(database_id=database_id,
                                               collection_id=c_id,
                                               key="title",
                                               required=True,
                                               size=100)

# Author Attribute
book_author = databases.create_string_attribute(database_id=database_id,
                                                collection_id=c_id,
                                                key="author",
                                                required=True,
                                                size=50)

# Genre Attribute
book_genre = databases.create_string_attribute(database_id=database_id,
                                               collection_id=c_id,
                                               key="genre",
                                               required=True,
                                               size=50)

print("Attributes Successfully Created.")

使用create_integer_attribute()方法来创建整数属性“ id” “ books” 集合。该方法由四个强制性参数调用:database_id(设置为database_id),collection_id(设置为c_id),key(将key设置为属性名称为属性名称)和required(设置为True,以表明此属性的价值是左空)。

使用create_url_attribute()方法来创建URL属性“ image” “ books” 集合。此方法还使用四个强制性参数调用:database_idcollection_idkey设置为"image"required参数设置为True

最后,使用create_string_attribute()方法来创建三个字符串属性,即“ title” “作者” “类型” 对于“书籍” 收集。此方法需要五个参数:database_idcollection_idkeyrequiredsize,这是属性允许的最大字符数。

Attributes

现在,所有进程已经完成并且数据库准备就绪,您可以从前端添加数据并将其作为文档存储在数据库中。

添加文档

遵循上一节中创建的模式,将在数据库中以编程方式添加数据,称为“ books” ,称为 “ booksdb” 在本节中。

""" Adding Documents """
# Unique Identifier for Document ID
document_id = ID.unique()

""" Function for Adding Documents(data) in the Database """
def add_doc(document):
    try:
        doc = databases.create_document(
            database_id=database_id,
            collection_id=c_id,
            document_id=document_id,
            data=document
        )

        print("Id:", doc['id'])
        print("Image:", doc['image'])
        print("Title:", doc['title'])
        print("Author:", doc['author'])
        print("Genre:", doc['genre'])
        print("-" * 20)

    except Exception as e:
        print(e)

代码定义了一个add_doc函数,该函数采用一个名为document的单个参数。在函数的try块中,调用databases.create_document()方法生成文档,该文档随后存储在doc变量中。

此方法需要四个强制性参数:database_id(设置为database_id),collection_id(设置为c_id),document_id(代表文档的唯一ID字典)。

doc变量存储了databases.create_document()返回的词典。使用此doc变量,代码检索 id image title 作者类型添加的文档并打印它们。

如果在try块的执行过程中出现异常,则代码捕获错误并显示错误消息。

数据

# Data To Be Added
book_1 = {
    "id": 1,
    "image": "https://i.pinimg.com/474x/dc/17/2d/dc172d6fa3f5461d94e6d384aded2cb4.jpg",
    "title": "The Great Gatsby",
    "author": "F. Scott Fitzgerald",
    "genre": "Fiction"
}

book_2 = {
    "id": 2,
    "image": "https://i.pinimg.com/originals/0b/bf/b5/0bbfb59b4d5592e2e7fac9930012ce6d.jpg",
    "title": "To Kill a Mockingbird",
    "author": "Harper Lee",
    "genre": "Fiction"
}

book_3 = {
    "id": 3,
    "image": "https://i.pinimg.com/736x/66/1d/17/661d179ab722e67eed274d24b8965b0d.jpg",
    "title": "Pride and Prejudice",
    "author": "Jane Austen",
    "genre": "Romance"
}

book_4 = {
    "id": 4,
    "image": "https://i.pinimg.com/originals/68/c5/4c/68c54c9599ba37d9ab98c0c51afe2298.png",
    "title": "Crime and Punishment",
    "author": "Fyodor Dostoevsky",
    "genre": "Psychological Fiction"
}

# Calling function with the data to be added
add_doc(book_1)
add_doc(book_2)
add_doc(book_3)
add_doc(book_4)
print("Documents Successfully Added.")

运行整个代码时,将提示以下输出,并且将创建数据库,收集和属性,然后添加文档。

Database Successfully Created.
Collection Successfully Created.
Attributes Successfully Created.
Id: 1
Image: https://i.pinimg.com/474x/dc/17/2d/dc172d6fa3f5461d94e6d384aded2cb4.jpg
Title: The Great Gatsby
Author: F. Scott Fitzgerald
Genre: Fiction
--------------------
Id: 2
Image: https://i.pinimg.com/originals/0b/bf/b5/0bbfb59b4d5592e2e7fac9930012ce6d.jpg
Title: To Kill a Mockingbird
Author: Harper Lee
Genre: Fiction
--------------------
Id: 3
Image: https://i.pinimg.com/736x/66/1d/17/661d179ab722e67eed274d24b8965b0d.jpg
Title: Pride and Prejudice
Author: Jane Austen
Genre: Romance
--------------------
Id: 4
Image: https://i.pinimg.com/originals/68/c5/4c/68c54c9599ba37d9ab98c0c51afe2298.png
Title: Crime and Punishment
Author: Fyodor Dostoevsky
Genre: Psychological Fiction
--------------------
Documents Successfully Added.

Documents

源代码

从以下GitHub存储库中访问完整的源代码,克隆或下载代码并将其运行在您喜欢的IDE中。

Python Script For Creating Appwrite Database

结论

教程带您介绍了在AppWrite Cloud中设置新数据库的步骤。它还包括用于创建新项目,为项目创建API密钥的说明,并从AppWrite Cloud中获取项目ID和API密钥。

创建数据库后,教程将通过添加集合和属性来完成使其充分发挥功能的步骤。然后以编程方式添加文档(数据)。

让我们介绍创建新数据库的本教程中的步骤:

  • 获得必要的AppWrite Cloud凭据

  • 安装Python软件包 appwrite

  • 制作数据库

  • 制作收集

  • 添加属性

  • 编程添加文档


如果您喜欢这个

,您可能会感兴趣的其他文章

How to connect the PostgreSQL database with Python

Upload and display images on the frontend using Flask in Python

Building a Flask image recognition webapp using a deep learning model

Building a custom deep learning model using transfer learning

How to augment the data for training using Keras and Python

How to build a CLI command in a few steps using argparse in Python

How to use Async/Await like JavaScript in Python

How to scrape a webpage's content using BeautifulSoup in Python


这就是目前的全部

保持编码