URL/JSON からデータを取得し、デコードして、JSON の要素を sqlite テーブルに送信しています。
JSON を 1 分おきにプルするので、同じ JSON (まだ更新されていない) をプルすることがあります。ただし、テーブルに同じデータを複数回入力したくありません。この問題の解決策は役に立ちます。
私の考えは、SQLite に渡されるフィールドの 1 つとして JSON の「実行時間」要素を単純に含めることでした。したがって、INSERT の代わりに REPLACE を使用すると、JSON に新しいタイムスタンプがある場合にのみ、既存の SQL テーブルに新しい行が挿入されます。これが私が意味することです:
json = json.loads(y)
jsontime = json['executionTime']
db = sqlite3.connect('database.db')
c = db.cursor()
c.execute("""CREATE TABLE IF NOT EXISTS cbdata (
cb_id INTEGER PRIMARY KEY ASC,
tjson DATE,
id INTEGER,
Name TEXT,
Age INTEGER);""")
for item in json['List']:
i1 = item["id"]
i2 = item["Name"]
i3 = item["Age"]
iall = [jsontime, i1, i2, i3]
c.execute("REPLACE into cbdata values(NULL,?,?,?,?)", iall)
ただし、これは重複行の入力を防止するものではありません。スクリプトが実行されるたびに、新しい (重複していても) エントリがテーブルに挿入されます。
考え?他の解決策?よろしくお願いします。