【问题标题】:Python named style parameter substitution in a JSON path in a SQLite query?SQLite查询中JSON路径中的Python命名样式参数替换?
【发布时间】:2021-12-30 23:04:49
【问题描述】:

我试图在包含JSON extract function 的 SQLite 选择查询中用 Python 变量替换 JSON 路径的一部分。如果我不使用替换,则查询有效:

c.execute("insert into rd_test values (?, ?)",
                ["test_record", json.dumps(k[0]["data"]["children"][0])])

sample_query = c.execute('''select json_extract(data, '$.data.title') from rd_test;''').fetchall()
print(sample_query)

这会正确返回[('sample_title',)]。但是,由于我必须使用许多不同的 JSON 记录,这些记录都在 JSON 文件中的同一路径级别,所以我想创建一个函数,我只需在其中输入不同的路径部分。

我想使用命名样式进行替换:

sample_query = c.execute('''select json_extract(data, '$.data.:var1') from rd_test;''', {"var1": 'title'}).fetchall()
print(sample_query)

这将返回 [(None,)]。我的错在哪里?

【问题讨论】:

    标签: python sqlite jsonpath json-extract


    【解决方案1】:

    占位符不会在字符串中替换。使用字符串连接将'$.data.' 与:var1 组合起来。

    sample_query = c.execute('''select json_extract(data, '$.data.' || :var1) from rd_test;''', {"var1": 'title'}).fetchall()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-11
      • 1970-01-01
      • 2019-06-13
      • 1970-01-01
      • 2021-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多