我試圖在包含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,)]. 我的錯誤在哪里?
uj5u.com熱心網友回復:
占位符不會在字串內被替換。使用字串連接'$.data.'與:var1.
sample_query = c.execute('''select json_extract(data, '$.data.' || :var1) from rd_test;''', {"var1": 'title'}).fetchall()
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/401090.html
