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

如何在Python函数中调用Jupyter的%%jsoniq单元格魔法?

解决方案:将RumbleDB JSONiq代码封装为自定义函数

问题背景

在Jupyter Notebook中配置RumbleDB后,通过%%jsoniq单元格魔法可以正常执行JSONiq代码,但尝试将该逻辑封装为自定义函数f()时,遇到以下问题:

  • 函数内直接使用%%jsoniq提示魔法函数未找到
  • 魔法指令开头定义函数出现JSONiq解析错误
  • 调用IPython.run_cell_magic仍存在解析错误

正确实现方式

方案一:使用RumbleDB Python API(推荐)

单元格魔法更适合交互式场景,程序化封装优先使用官方提供的Python API,无需依赖魔法指令:

# 单元格1(保持原配置不变)
import rumbledb as rmbl
%load_ext rumbledb
%env RUMBLEDB_SERVER=http://public.rumbledb.org:9090/jsoniq

# 定义自定义函数
def f():
    # 执行JSONiq查询并返回结果
    query_result = rmbl.query('parse-json("{\"x\":3}").x')
    print(query_result)
    return query_result

# 调用函数
f()

执行后输出与原单元格2一致:

Took: 0.2607388496398926 ms
3

方案二:修正run_cell_magic调用(兼容魔法指令)

若坚持使用单元格魔法,需注意两个关键点:

  1. 修正原JSONiq代码的语法错误(原代码多了一个闭合大括号})
  2. 正确传递run_cell_magic的参数
from IPython import get_ipython

def f():
    ip = get_ipython()
    # 第二个参数为魔法指令的附加参数(无则传空字符串),第三个参数为JSONiq代码
    result = ip.run_cell_magic('jsoniq', '', 'parse-json("{\"x\":3}").x')
    return result

# 调用函数
f()

关键说明

  • 原解析错误的核心原因是JSONiq代码中的语法错误:parse-json("{\"x\":3}}")多了一个},修正为parse-json("{\"x\":3}")即可解决
  • Python API方式更适合批量调用、参数化查询等场景,代码可读性和可维护性更强

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 21:13:14