Skip to main content
Pflege eine lokale Kopie deiner Daten, ohne bei jedem Lauf jede Tabelle abzurufen. Die Tabellen werden einmal täglich vollständig neu geladen, es gibt also kein Delta auf Zeilenebene: Die Einheit der Änderung ist die Tabelle. Frage über /changes ab, welche Tabellen seit deinem letzten Lauf neu geladen wurden, und rufe genau diese Tabellen erneut ab — vollständig.
Speichere next_cursor nicht zwischen Läufen. Nach einem Neuladen können sich Zeilen ändern, wegfallen oder ihre Position verschieben. Wer bei einem alten Cursor fortsetzt, behält unbemerkt veraltete Daten.
1

Die neu geladenen Tabellen finden

Rufe /changes mit dem since-Wert aus deinem letzten Lauf auf. Nimm dafür das höchste last_sync_at aus der Antwort dieses Laufs; beim allerersten Lauf einen Zeitstempel bis zu 120 Tage zurück. Jeder Eintrag einer Category-Tabelle enthält category und api_table_name; abgerufen wird sie unter /v1/{category}/{api_table_name}.
Tabellen, die in der Antwort fehlen, wurden nicht neu geladen. Überspringe sie.
2

Jede geänderte Tabelle vollständig abrufen

Rufe die erste Seite ohne cursor ab. Die Zeilen stehen in data; next_cursor im Response-Body verweist auf die nächste Seite. Übergib ihn unverändert als cursor-Parameter und wiederhole das, bis next_cursor null ist. Der Cursor dient nur zum Blättern innerhalb eines einzelnen Laufs.
3

Die lokale Tabelle ersetzen

Sind alle Seiten da, ersetze deine lokale Kopie dieser Tabelle, statt anzuhängen. So verschwinden auch gelöschte Zeilen. Speichere dann das höchste last_sync_at als since-Wert für den nächsten Lauf.
4

Vollständiges Python-Beispiel

Ein vollständiges Skript, das jede Tabelle erneut abruft, die seit dem letzten Lauf neu geladen wurde. Erfordert das Paket requests.
sync_changed_tables.py