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

Python调用Neo4j driver.session报TypeError:需1个位置参数但传2个

报错原因
  • Python类实例方法调用时,会自动把当前实例作为第一个位置参数self传入方法。执行driver.session("WRITE")时,实际传递进方法的位置参数共2个:第一个是自动传入的driver实例(对应方法定义里的self),第二个是手动传入的字符串"WRITE"。
  • 4.0及以上版本的Neo4j Python驱动修改了session()方法的签名:除自动传入的self外,不接受任何位置形式的传参,所有配置项(包括访问模式、目标数据库等)都被设为关键字专属参数——方法定义中用*做了参数分隔,分隔符后的参数只能通过参数名=值的关键字形式传递,不能按位置传入,因此传入位置参数"WRITE"时会触发参数数量不匹配的报错。
  • 网上部分旧教程基于3.x及更早版本的驱动编写,旧版本确实支持将访问模式作为第一个位置参数直接传入,但该写法在4.0版本接口升级时已被废弃。
解决方法

不要直接传字符串形式的访问模式,按如下方式调整:

  1. 导入驱动内置的访问模式常量,避免手动写字符串出现拼写问题:
from neo4j import WRITE_ACCESS
  1. 创建session时,通过关键字参数形式指定默认访问模式:
session = driver.session(default_access_mode=WRITE_ACCESS)

如果需要指定连接的目标数据库,同样通过关键字参数追加即可,示例:

session = driver.session(default_access_mode=WRITE_ACCESS, database="neo4j")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 16:33:15