【问题标题】:In Python, how do I create an edge collection and document for an arangodb?在 Python 中,如何为 arangodb 创建边缘集合和文档?
【发布时间】:2015-06-17 16:41:50
【问题描述】:

我正在尝试编写一个 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!

【问题讨论】:

  • “它不起作用”
  • 第一步不允许将集合更改为文档以外的任何类型。由于这是选择要引用的集合的第一步,因此我实际上还没有进入尝试添加到已经存在的边缘集合的步骤。
  • @ChristopherHooper 这仍然是个问题吗? dothebart 提供的链接对您有帮助吗?

标签: python arangodb


【解决方案1】:

我最终通过使用 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

对不起,我花了这么长时间才回到这个!我希望这对其他人有帮助!

【讨论】:

    【解决方案2】:

    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()
    

    【讨论】:

      猜你喜欢
      • 2020-03-23
      • 2020-08-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多