代码之家  ›  专栏  ›  技术社区  ›  Stanko

使用pyarango重命名集合

  •  0
  • Stanko  · 技术社区  · 7 年前

    我正在尝试使用 pyArango . 这就是我目前为止所拥有的:

    connection = pyArango.Connection('http://random-address', username='random-username', password='random-password')
    test_db = Database(connection, 'test-db')
    collection = test_db["new"]
    collection.action("PUT", "rename", name="newname")
    

    代码在第4行失败:

    “错误”:真,“代码”:400,“错误号”:1208,“错误消息”:“名称” 必须为非空'

    我可能正在使用 action 方法不正确,但文档没有提供任何示例。有人有主意吗?

    2 回复  |  直到 7 年前
        1
  •  0
  •   CodeManX    7 年前

    {"name": "newname"} collection.action()

    def action(self, method, action, **params) :
        "a generic fct for interacting everything that doesn't have an assigned fct"
        fct = getattr(self.connection.session, method.lower())
        r = fct(self.URL + "/" + action, params = params)
        return r.json()
    

    params fct() ?name=newname

    action()

    from pyArango.connection import *
    connection = Connection('http://localhost:8529', username='root', password='')
    
    try:
        connection.createDatabase('test-db')
    except CreationError:
        pass
    test_db = Database(connection, 'test-db')
    
    try:
        test_db.createCollection(name='new')
    except CreationError:
        pass
    collection = test_db['new']
    
    r = connection.session.put(collection.URL + '/rename', data='{"name":"newname"}')
    print(r.text)
    collection = test_db['newname']
    

    import json
    ...put(..., data=json.dumps({"name": "newname"}))
    
        2
  •  0
  •   Stanko    7 年前

    def rename_collection(arango_uri, username, password, database, collection, new_name):
        url = '{}/_db/{}/_api/collection/{}/rename'.format(arango_uri, database, collection)
        params = {"name": new_name}
        response = requests.put(url, data=json.dumps(params), auth=HTTPBasicAuth(username, password))
        return response
    
    推荐文章