我需要將一個字典串列插入到 SQLite 表中,并能夠按原樣取回它 - 一個字典串列。可以選擇將其作為 json 字串插入。SQLite 接受它,但回傳一個“格式錯誤的節點或字串”。我正在使用pycharm。試圖使用 ast.literal_eval() 轉換為串列 - 同樣的錯誤。為什么所有的括號和昏迷結束?會感謝任何幫助。
import json, sqlite3, pprint
list1 = [{'id': '9', 'name': 'Buiding'},
{'id': '10', 'name': 'Security'},
{'id': '11', 'name': 'Mass Media'},
{'id': '12', 'name': 'Consulting'},
{'id': '13', 'name': 'Medical care'}]
conn = sqlite3.connect('test.db')
c = conn.cursor()
c.executescript("DROP TABLE IF EXISTS result; CREATE TABLE result (data json)")
c.execute("insert into result values (?)", [json.dumps(list1)])
conn.commit()
a = c.execute("select json_extract (data, '$') FROM result;").fetchall()
conn.close()
pprint.pprint(a)
[('[{"id":"9","name":"Buiding"},{"id":"10","name":"Security"},
{"id":"11","name":"Mass Media"},{"id":"12","name":"Consulting"},
{"id":"13","name":"Medical care"}]',)]
uj5u.com熱心網友回復:
不要使用 json_extract!您通過 JSON.dumps 將 dict 作為字串插入,將其作為字串讀回 str 變數,然后通過 JSON.loads 解包。
import json, sqlite3, pprint
list1 = [{'id': '9', 'name': 'Buiding'},
{'id': '10', 'name': 'Security'},
{'id': '11', 'name': 'Mass Media'},
{'id': '12', 'name': 'Consulting'},
{'id': '13', 'name': 'Medical care'}]
conn = sqlite3.connect(':memory:')
c = conn.cursor()
c.executescript("DROP TABLE IF EXISTS countries; CREATE TABLE result (data json)")
c.execute("insert into result(data) values (?)", [json.dumps(list1)])
conn.commit()
a = json.loads(c.execute("select data FROM result;").fetchone()[0])
conn.close()
pprint.pprint(a == list1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/519849.html
標籤:json列表sqlite
