NebulaPython 查询不到结果,返回result ResultSet(None)

提问参考模版:

  • nebula 版本:3.6.0

  • 部署方式:单机

  • 安装方式:Docker

  • 是否上生产环境:Y

  • 硬件信息

    • SSD
    • WSL2 下的ubuntu
    • 8核CPU,内存24G
  • 问题的具体描述
    使用相同的ngql,在python代码中结果返回为 ResultSet(None),但在 webstudio 中返回是有值的。这是为什么呀?
    代码如下:

from nebula3.gclient.net import ConnectionPool
from nebula3.Config import Config
from fastapi import FastAPI


app = FastAPI()

@app.get("/")
async def root():
    # define a config
    config = Config()
    config.max_connection_pool_size = 10
    # init connection pool
    connection_pool = ConnectionPool()
    # if the given servers are ok, return true, else return false
    ok = connection_pool.init([('172.19.0.1', 9669)], config)
    if not ok:
        raise ValueError("connection pool init failed")
    session = connection_pool.get_session('root', 'nebula')
    assert session is not None
    session.execute('USE qixincha-v2')
    result = session.execute("MATCH (n)-[:hold_share]->(v) WHERE id(v) == '7805cdb90538ec48fc9f5f45d1c8ac44' RETURN n;")
    print(result)
    session.release()

    return 'SUCCESS'

nGQL不加最后的分号试试呢,猜的

1 个赞

试过了,分号对结果不影响。

解决了。是因为space_name里我命名的是“qixincha-v2”。重命名该空间为"qixincha_v2" 以后,返回结果与webstudio是一致的。但是不清楚如果必须在space name中使用 - ,应该如何引用。


用反引号试试

space 的 name 是可以用 - 的。

我怀疑是这个语句有问题,所以导致你没有出来结果。如果 space 不能用的话,是会直接报错的,而非没有结果。你可以去 console 里执行下这个语句,看看是不是没有执行结果。

此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。