Я пытаюсь сохранить свои данные Json, которые я извлек из URL-адреса, но я изо всех сил пытаюсь сохранить их в базе данных SQLite.
Json:
{"Адрес": "ff00000a70d57128", "Цельсий": 26,8125, "Фаренгейт": 80,2625}
Я осмотрелся и черпал вдохновение из:
сохранение данных json в sqliteПреобразование JSON в SQLite в Python. Как правильно сопоставить ключи json со столбцами базы данных?
import threading
import json
import urllib.request
import sqlite3
def tempRequest():
# download raw json object
url = "http://10.0.0.111:8080/getdevice?device=type28_1"
data = urllib.request.urlopen(url).read().decode()
# parse json object
obj = json.loads(data)
print(obj)
tempRequest()
conn = sqlite3.connect('test.db')
c = conn.cursor()
def create_table():
c.execute("CREATE TABLE IF NOT EXISTS data(Celcius TEXT)")
def data_entry():
c.executemany('INSERT INTO data (Celcius) ''VALUES (:Celcius)
conn.commit()
c.close()
conn.close()
create_table()
data_entry()
Что я получаю, когда запускаю это:
TypeError(f'объект JSON должен быть str, bytes или bytearray, ' TypeError: объект JSON должен быть str, bytes или bytearray, а не с многоточием
Я пытался изменить:
obj = json.loads(data)
к
obj = json.loads(str(data))
Но я думаю, что проблема в том, как я справляюсь с частью БД, любые советы будут очень признательны. Спасибо!






Это доказательство концепции, которую я написал некоторое время назад, чтобы загрузить биржевые данные JSON и сохранить их в формате строки в SQLite.
Разные данные, та же концепция. Надеюсь, поможет
import json
import urllib.request
import sqlite3
from os import path
stocks = ['AAPL', "MSFT"]
connection = sqlite3.connect("C:\\Projects\\AIFX\\Spikes\\Data\\Stocks.db")
cursor = connection.cursor()
for stock in stocks:
url = "https://financialmodelingprep.com/api/v3/historical-price-full/" + stock
data = urllib.request.urlopen(url).read().decode()
obj = json.loads(data)
for child in obj['historical']:
print(child)
cursor.execute("Insert into StockPrices values (?, ?, ?, ?, ?, ?, ?)",
(child['date'], child['close'], child['high'], child['low'],
child['open'], child['volume'], stock))
connection.commit()
Определение таблицы для хранения данных в SQLite:
CREATE TABLE "StockPrices" (
"date" TEXT,
"close" INTEGER,
"high" INTEGER,
"low" INTEGER,
"open" INTEGER,
"volume" INTEGER,
"symbol" TEXT
);
Форма JSON
{
"symbol" : "AAPL",
"historical" : [ {
"date" : "2015-04-22",
"open" : 126.99,
"high" : 128.87,
"low" : 126.32,
"close" : 128.62,
"adjClose" : 119.0,
"volume" : 3.76545E7,
"unadjustedVolume" : 3.76545E7,
"change" : 1.63,
"changePercent" : 1.284,
"vwap" : 127.93667,
"label" : "April 22, 15",
"changeOverTime" : 0.01284
}, {
"date" : "2015-04-23",
"open" : 128.3,
"high" : 130.42,
"low" : 128.14,
"close" : 129.67,
"adjClose" : 119.97,
"volume" : 4.57709E7,
"unadjustedVolume" : 4.57709E7,
"change" : 1.37,
"changePercent" : 1.068,
"vwap" : 129.41,
"label" : "April 23, 15",
"changeOverTime" : 0.01068
}
}
Когда вы отлаживаете скрипт Python,
pdb— ваш друг. Поместитеimport pdb; pdb.set_trace()в любое место, где хотите остановиться, затем запустите скрипт. Появился интерпретатор pdb, и вы можете проверять такие переменные, какdata, точно так же, как интерпретатор python.