0

我试图在包含JSON 提取函数的 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,)]。我的错误在哪里?

4

1 回答 1

0

占位符不会在字符串中替换。使用字符串连接'$.data.':var1.

sample_query = c.execute('''select json_extract(data, '$.data.' || :var1) from rd_test;''', {"var1": 'title'}).fetchall()
于 2021-12-30T23:54:19.063 回答