用python操作和管理ArangoDB

Posted MingleX

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用python操作和管理ArangoDB相关的知识,希望对你有一定的参考价值。

目录:

安装需要用到的python包:

pip install pyarango

一、连接数据库:

>>> from pyArango.connection import *
>>> conn = Connection(username="root", password="root_passwd")

 当该代码执行时,它会初始化 conn 变量上的服务器连接。默认情况下,pyArango会尝试建立与http://127.0.0.1:8529的连接。

二、创建数据库/集合/文档

创建和打开数据库

方法:

createDatabase()

该方法可以在服务器上打开或创建数据库,当要连接的数据库不存在时,pyArango会在服务器上创建它。当它存在时,pyArango会尝试打开数据库。

>>> db = conn.createDatabase(name="school")

也可以使用其名称作为服务器连接上的键来打开现有数据库:

>>> db = conn["school"]
>>> db
ArangoDB database: school

创建集合

方法:

createCollection()

>>> studentsCollection = db.createCollection(name="Students")
>>> db["Students"]
ArangoDB Collection name: Students, id: 202, type: document, status loaded

创建文档

方法:

createDocument()

>>> doc1 = studentsCollection.createDocument()
>>> doc1["name"] = "John Smith"
>>> doc1
ArangoDoc None: {name: John Smith}
>>> doc2 = studentsCollection.createDocument()
>>> doc2["firstname"] = "Emily"
>>> doc2["lastname"] = "Bronte"
>>> doc2
ArangoDoc None: {firstname: Emily, lastname: Bronte} 

因为尚未将其保存到ArangoDB,所以该文档显示其 _id 为“None”。这意味着该变量存在于您的Python代码中,但不存在于数据库中。 ArangoDB 通过将集合名称与 __key 值进行配对来构造 _id 值。

保存文档:

>>> doc1._key = "johnsmith"
>>> doc1.save()
>>> doc1
ArangoDoc Students/johnsmith: {name: John Smith}

循环输入数据:

>>> students = [(Oscar, Wilde, 3.5), (Thomas, Hobbes, 3.2), 
... (Mark, Twain, 3.0), (Kate, Chopin, 3.8), (Fyodor, Dostoevsky, 3.1), 
... (Jane, Austen,3.4), (Mary, Wollstonecraft, 3.7), (Percy, Shelley, 3.5), 
... (William, Faulkner, 3.8), (Charlotte, Bronte, 3.0)]
>>> for (first, last, gpa) in students:
...    doc = studentsCollection.createDocument()
...    doc[name] = "%s %s" % (first, last)
...    doc[gpa] = gpa 
...    doc[year] = 2017
...    doc._key = ‘‘.join([first, last]).lower() 
...    doc.save()

三、检索筛选

查看某一个特定学生的GPA:

>>> def report_gpa(document):
...    print("Student: %s" % document[name])
...    print("GPA:     %s" % document[gpa])
>>> kate = studentsCollection[katechopin]
>>> report_gpa(kate)
Student: Kate Chopin
GPA:     3.8

筛选平均成绩在3.5以上的学生:

方法:

fetchAll()

>>> def top_scores(col, gpa):
...    print("Top Soring Students:")
...    for student in col.fetchAll():
...       if student[gpa] >= gpa:
...          print("- %s" % student[name])
>>> top_scores(studentsCollection, 3.5)
Top Scoring Students:
- Mary Wollstonecraft 
- Kate Chopin
- Percy Shelly
- William Faulkner
- Oscar Wilde

四、更新

可以定义一个特定的函数来处理更新:

>>> def update_gpa(key, new_gpa):
...    doc = studentsCollection[key]
...    doc[gpa] = new_gpa
...    doc.save()

五、删除

方法:

delete()

>>> tom = studentsCollection["thomashobbes"]
>>> tom.delete()
>>> studentsCollection["thomashobbes"]
KeyError: (
   Unable to find document with _key: thomashobbes, {
      code: 404,
      errorNum: 1202,
      errorMessage: document Students/thomashobbes not found,
      error: True
})

六、调用AQL的方法

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

检索所有文档的_key:

>>> aql = "FOR x IN Students RETURN x._key"
>>> queryResult = db.AQLQuery(aql, rawResults=True, batchSize=100)
>>> for key in queryResult:
...    print(key)
marywollstonecraft
katechopin
percyshelley
fyodordostoevsky
marktwain
...

 

 

 

参考资料:

https://www.arangodb.com/tutorials/cn-tutorial-python/

 

以上是关于用python操作和管理ArangoDB的主要内容,如果未能解决你的问题,请参考以下文章

使用Python操作ArangoDB

ArangoDB集合操作

ArangoDB集合操作

ArangoDB Restful API

ArangoDB Restful API

开源NoSQL数据库:ArangoDB 入门指南