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

使用Neo4j Python Driver执行:use语句失败,是否不支持该操作?

问题原因与解决办法
  • 首先明确::use {database}是Neo4j Cypher Shell的交互命令,不属于标准Cypher查询语句,所以Neo4j Python Driver的session.run()方法无法执行该命令,这是你代码无效的核心原因。
  • 官方推荐的数据库切换方式是:在创建Session对象时,通过database参数直接指定目标数据库,而非执行:use命令。

修改后的可用代码

from fastapi import FastAPI
from pydantic import BaseModel
import os
from dotenv import load_dotenv
from neo4j import GraphDatabase

load_dotenv()
uri = os.getenv("uri")
user = os.getenv("user")
pwd = os.getenv("pwd")

class Database(BaseModel):
    db: str

def get_driver():
    driver = GraphDatabase.driver(uri=uri, auth=(user, pwd))
    return driver

app = FastAPI()

@app.post("/selectdb")
def selectdb(database: Database):
    driver_neo4j = get_driver()
    # 创建Session时直接指定目标数据库
    session = driver_neo4j.session(database=database.db)
    # 可选:执行简单查询验证切换成功
    result = session.run("RETURN '数据库切换成功' AS message")
    status_msg = result.single()["message"]
    return {"response": f"已选择数据库: {database.db}", "status": status_msg}

额外说明

  • 把原connection()重命名为get_driver(),语义更贴合实际功能
  • Pydantic模型类名首字母大写,符合Python命名规范
  • 创建Session时传入database参数,是Neo4j Python Driver切换数据库的标准方式
  • 新增的简单查询可以帮你验证数据库是否成功切换

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 02:01:57