在Python中,如何为arangodb创建一个edge集合和文档?

ruyhziif  于 2022-12-09  发布在  Go
关注(0)|答案(2)|浏览(153)

我正在尝试编写一个python脚本来创建一个边缘集合,并将边缘插入到我的arango数据库中。ArangoDB文档包括如何创建一个文档集合以及该集合中的一个文档:
UsersCollection= db.createCollection(name = "Users") doc = usersCollection.createDocument() doc["name"] = "Tesla" doc.save()
然而,当我尝试将其用于创建边缘集合或向边缘集合添加边缘时,它不起作用。第一步不允许将集合更改为文档以外的任何类型。由于这是选择要引用的集合的第一步,因此我实际上还没有尝试向已经存在的边缘集合添加边缘。
这可能吗?

更新

最后,我使用API以不同的方式处理了这个问题。我的问题是,我试图批量导入边缘的NSJ。当我试图像导入文档集合一样导入时,它会创建一个文档集合,然后出现将边缘导入到文档集合的相关问题。为了解决这个问题,我执行了以下操作:
第1步:在db接口中使用我的边缘集合名称手动创建我的集合。
第2步:然后我编写了这段代码,将NSF边缘作为f传递,将边缘集合名称作为name传递。

def upload_Collection(f, name):
   filez = open(f).read()
   url = "/_api/import?type=auto&collection=%s&createCollection=false&overwrite=true&waitForSync=false&complete=false&details=true" % (
    name)
   r = requests.post(url, data=filez)
   return r.text

对不起,我花了这么长时间才回到这个!我希望这是对别人的帮助!

备注

我选择不使用ArangoDB python驱动程序是因为,老实说,我发现实际实现起来很混乱。无论如何,谢谢你的建议,@dothebart!

of1yzvn4

of1yzvn41#

最后,我使用API以不同的方式处理了这个问题。我的问题是,我试图批量导入边缘的NSJ。当我试图像导入文档集合一样导入时,它会创建一个文档集合,然后出现将边缘导入到文档集合的相关问题。为了解决这个问题,我执行了以下操作:
第1步:在db接口中使用我的边缘集合名称手动创建我的集合。
第2步:然后我编写了这段代码,将我的NSF边缘作为f传递,将我的边缘集合名称作为name传递。

def upload_Collection(f, name):
   filez = open(f).read()
   url = "/_api/import?type=auto&collection=%s&createCollection=false&overwrite=true&waitForSync=false&complete=false&details=true" % (
    name)
   r = requests.post(url, data=filez)
   return r.text

对不起,我花了这么长时间才回到这个!我希望这是对别人的帮助!

a0zr77ik

a0zr77ik2#

createCollection构造函数中有可用的className='Edges'选项,例如

from pyArango.connection import *

conn = Connection(username="root", password="") # set your password
db = conn.createDatabase(name="TestDB")

users = db.createCollection(name="User")
edges = db.createCollection(name="edges", className='Edges')

users.createDocument({'_key':u1, 'name':'Alice'}).save()
users.createDocument({'_key':u2, 'name':'Bob'}).save()
edges.createDocument({'_from':'User/u1', '_to':'User/u2'}).save()

相关问题