Python SQLite 查询中 JSON 路径中的命名样式参数替换?
Python named style parameter substitution in a JSON path in a SQLite query?
我试图在包含 JSON extract function 的 SQLite select 查询中用 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)
这个正确returns[('sample_title',)]
。但是,由于我必须处理许多不同的 JSON 记录,这些记录都在 JSON 文件中的同一路径级别上,所以我想创建一个函数,我只需要在其中输入不同的路径。
我想使用命名样式进行替换:
sample_query = c.execute('''select json_extract(data, '$.data.:var1') from rd_test;''', {"var1": 'title'}).fetchall()
print(sample_query)
这个returns[(None,)]
。我的错误在哪里?
占位符不会在字符串中被替换。使用字符串连接将 '$.data.'
与 :var1
.
组合
sample_query = c.execute('''select json_extract(data, '$.data.' || :var1) from rd_test;''', {"var1": 'title'}).fetchall()
我试图在包含 JSON extract function 的 SQLite select 查询中用 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)
这个正确returns[('sample_title',)]
。但是,由于我必须处理许多不同的 JSON 记录,这些记录都在 JSON 文件中的同一路径级别上,所以我想创建一个函数,我只需要在其中输入不同的路径。
我想使用命名样式进行替换:
sample_query = c.execute('''select json_extract(data, '$.data.:var1') from rd_test;''', {"var1": 'title'}).fetchall()
print(sample_query)
这个returns[(None,)]
。我的错误在哪里?
占位符不会在字符串中被替换。使用字符串连接将 '$.data.'
与 :var1
.
sample_query = c.execute('''select json_extract(data, '$.data.' || :var1) from rd_test;''', {"var1": 'title'}).fetchall()