You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

gremlin_python执行filter查询报GraphTraversal对象不可调用错误

问题原因

触发'GraphTraversal' object is not callable报错的核心原因是gremlin_python的匿名遍历语法和Gremlin控制台有差异:
在Gremlin控制台中,可以直接在遍历嵌套位置写count()、properties()这类步骤作为匿名遍历;但在gremlin_python中,所有不绑定在起始遍历源g上的匿名遍历步骤,都必须通过双下划线__(匿名遍历对象)发起,直接裸写导入的遍历方法名时,导入的名称本身是GraphTraversal类的实例,加括号调用就会触发「对象不可调用」的类型错误。

修复步骤
  1. 先补全必要的导入项,其中__是gremlin_python提供的匿名遍历入口:
from gremlin_python.process.traversal import gt, local, keys, values
from gremlin_python.process.graph_traversal import __
  1. 把代码中所有嵌套位置裸写的遍历步骤,前面加上__.前缀,注意gt、local、keys、values这类断言、枚举值不需要加前缀。
修正后可运行代码
g.V().has('id', 12345) \
    .fold().filter(__.count(local).is_(gt(1))).unfold() \
    .sideEffect(__.properties().group("p").by(__.key()).by(__.value())) \
    .sideEffect(__.outE().group("o").by(__.label()).by(
        __.project("p","iv").by(__.valueMap()).by(__.inV()).fold()
    )) \
    .sideEffect(__.inE().group("i").by(__.label()).by(
        __.project("p","ov").by(__.valueMap()).by(__.outV()).fold()
    )) \
    .sideEffect(__.drop()) \
    .cap("p","o","i").as_("poi") \
    .addV("User").as_("u") \
    .sideEffect(
        __.select("poi").select("p").unfold().as_("kv")
        .select("u").property(__.select("kv").select(keys), __.select("kv").select(values))
    ) \
    .sideEffect(
        __.select("poi").select("o").unfold().as_("x").select(values)
        .unfold().addE(__.select("x").select(keys)).from_(__.select("u")).to(__.select("iv"))
    ) \
    .sideEffect(
        __.select("poi").select("i").unfold().as_("x").select(values)
        .unfold().addE(__.select("x").select(keys)).from_(__.select("ov")).to(__.select("u"))
    ).iterate()

注意:keys、values是遍历用的枚举值,直接从traversal模块导入即可,不要写成__.keys()/__.values(),否则会触发语法错误。

内容的提问来源于stack exchange,提问作者d95l

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 00:45:48