ArangoDB教程: Python 10分钟

ArangoDB教程: Python 10分钟

对于Python开发人员,有多种驱动程序可供使用,您可以在应用程序中操作和管理ArangoDB服务器和数据库。

本教程是基于Tariq Daouda的 pyArango 驱动程序。您需要在主机上 安装 并启动ArangoDB,然后从Python包索引中安装pyArango。

一旦完成安装过程,您就可以开始在Python中开发ArangoDB应用程序。

使用说明

为了在应用程序中对ArangoDB服务器和数据库进行操作,您需要建立与服务器的连接,然后使用该连接在该服务器上打开或创建数据库。

PyArango通过命名方便的 连结 等级,来管理服务器连接。

当该代码执行时,它会初始化 conn 变量上的服务器连接。默认情况下,pyArango会尝试建立与http://127.0.0.1:8529的连接。也就是说,它希望在端口8529上初始化到本地主机的远程连接。如果您在不同的服务器上托管ArangoDB或使用不同的端口,则需要在实例化 连接 类时设置这些选项。

创建和打开数据库

通过连接到ArangoDB服务器,您可以在服务器上打开或创建数据库并对其进行操作。服务器连接上的createDatabase() 方法会执行这两个操作,返回一个 Database 实例。

school 数据库不存在时,pyArango会在服务器连接上创建它。当它存在时,它会尝试打开数据库。您也可以使用其名称作为服务器连接上的键来打开现有数据库。例如,

创建集合

ArangoDB将文档和边缘分组到集合中。这与关系数据库中的表的概念类似,但是关键区别在于集合是非模式化的。

在pyArango中,您可以通过调用给定数据库上的 createCollection() 方法来创建一个集合。例如,在上面的部分,您创建了一个 school 数据库。您可能希望在该数据库上的学生集合。

创建文档

建好数据库和集合之后,您可以开始添加数据。在关系数据库里,其中集合是表,文档是该表上的一行。然而,与行不同,这里的文档是非模式化的。您可以包含应用程序所需的任何值的排列。

例如,将一个student 添加到集合中:

该文档显示其 _id 为“无”,因为您尚未将其保存到ArangoDB。这意味着该变量存在于您的Python代码中,但不存在于数据库中。 ArangoDB 通过将集合名称与 __key 值进行配对来构造 _id 值。除此之外,还可以处理作业,您只需要设置密钥并保存文档。

不用手动输入和保存所有学生的数据,您可能希望通过循环输入数据,而不是单独调用。例如,

阅读文件

最终,您需要访问数据库中的文档。最简单的方法是使用 _key value。

例如,学校数据库现在有几个学生。想象一下这是一个更大的应用程序的一部分,每个学生都有更多的数据,你想查看某一个特定学生的GPA:

更新文件

当您从ArangoDB读取文档到您的应用程序时,您将创建文档的本地副本。然后,您可以对文档进行操作,进行任何您喜欢的更改,然后使用 save() 方法将结果推送到数据库。

例如,每个学期每个班级的期末成绩,您需要更新学生在数据库中的成绩点平均数。鉴于这种情况经常发生,您可能需要创建一个特定的函数来处理更新:

列出文档

有时,您可能希望对给定集合中的所有文档进行操作。使用 fetchAll() 方法,您可以检索和迭代文档列表。例如,学期末,您想知道哪些学生的平均成绩在3.5以上:

删除文档

最终,您可能希望从数据库中删除文档。这可以通过 delete() 方法来实现。例如说,学生托马斯·霍布斯决定搬到另一个城市:

AQL 的使用方法

除了上面显示的Python方法之外,ArangoDB还提供了一种查询语言(称为AQL),用于检索和修改数据库上的文档。在pyArango中,您可以使用 AQLQuery() 方法执行这些查询。

例如,假设您要检索ArangoDB中所有文档的密钥:

在上面的例子中,AQLQuery() 方法使用AQL查询作为参数,和另外两个选项:

  • rawResults 定义是否要查询查询返回的实际结果。
  • batchSize 当查询返回的结果超过给定值时,pyArango驱动程序将自动请求新的批次。

提醒:此查询不能保证文件的顺序。如果您需要特定顺序的结果,请向AQL查询添加一个排序子句。

使用AQL 插入文档

与上述文档创建类似,您也可以使用AQL将文档插入到ArangoDB中。这是通过使用 AQLQuery() 方法的 bindVars 选项的 INSERT 语句来完成的。

使用 RETURN newDoc 将添加到数据库的新文档设置为返回值。意思是,您现在可以通过调用以下方式查看结果:

使用AQL 更新文档

如果数据库中已经存在文档,并且您想要修改该文档中的数据,则可以使用 UPDATE 语句。例如,您在CSV文件中收到学生的更新成绩点平均值。

首先,查看其中一位学生的GPA,以查看旧值:

然后通过循环文件更新每个学生的GPA:

最后,再次查看学生的GPA。

虽然学生可以在不同学期间有相同的GPA,但在这种情况下,凯特的GPA提高了了几分。

使用AQL 删除文档

最后,您还可以使用 REMOVE 语句从ArangoDB中删除文档。例如,假设今年的学生已经完成学业并已毕业,您要将其从数据库中删除。您可以使用  属性来区分不同类别的学生,您可以使用 FILTER 子句来保留某些并删除其他学生。

FILTER 条件仅对与条件匹配的文档进行迭代。语句 REMOVE x IN 删除文档(匹配该条件)。@@collection(注意 @@ )定义集合名称的绑定变量。

AQLQuery() 给出的返回值会保留旧文档。所以,如果您直接查询,数据会直接显示。

如果您尝试从数据库中检索文档,ArangoDB会返回错误。

学习更多

现在您已经知道如何使用ArangoDB

  • 我们还有一个介绍 Tutorials 更多操作方法的教程
  • 查看 AQL 以了解关于我们查询语言的更多信息
  • 你想了解数据库的更多信息吗? 点击这里!
  • 阅读更多关于 集合 的内容
  • 发现关于 文档 的更多内容
  • 更多示例,您可以浏览 ArangoDB菜谱

猜你喜欢

转载自blog.csdn.net/u010159842/article/details/80727950