Ich versuche, eine Funktion in Python zu schreiben, die die CartoDB-API verwendet, um Daten in eine meiner Tabellen zu schreiben. Hat jemand ein einfaches Beispiel, das zeigt, wie das geht, mit dem ich anfangen kann?
8
Das Schreiben von Daten über die API ist ziemlich einfach. Hier ist das grundlegendste,
Angenommen, wir haben bereits zwei Variablen. Wie Sie sie erhalten, liegt bei Ihnen.username = 'cartodb-user-name'
apikey = 'MY-CARTODB-API-KEY'
Als Nächstes erstellen wir eine zu verwendende INSERT-Anweisung
insert = "INSERT INTO my_table_name (the_geom, measure) VALUES (CDB_LatLng(43, -120), 22.0)"
Erstellen Sie den URL-Endpunkt für unsere Konto-API
url = "https://%s.cartodb.com/api/v1/sql" % username
Erstellen Sie ein Objekt, das die Parameter unserer Anfrage enthält
params = {
'api_key' : apikey, # our account apikey, don't share!
'q' : insert # our insert statement above
}
Senden Sie die Anfrage mit urllib2
req = urllib2.Request(url, urllib.urlencode(params))
response = urllib2.urlopen(req)
import urllib
import urllib2
Hier ist ein Beispiel für eine mehrzeilige (3) Einfügestrategie. Ich verwende ein Array, um zunächst alle meine Zeilenwerte zu speichern. Jeder Zeilenwert ist eine durch Kommas getrennte Liste, die in Klammern eingeschlossen und im Array gespeichert ist.
rows = [
"(CDB_LatLng(10, 10), 1.0)",
"(CDB_LatLng(20, 12), 1.4)",
"(CDB_LatLng(30, 14), 1.2)"
]
insert = "INSERT INTO my_table_name (the_geom, measure) (VALUES %s)" % ','.join(rows)
Damit habe ich alle 3 Zeilen in eine einzige http
Anfrage eingeschlossen. Es funktioniert rundum schneller und ist sehr zu empfehlen. Aus persönlicher Erfahrung funktionieren 100-250 Zeilen gleichzeitig sehr gut.
Es gibt eine Python-Bibliothek für CartoDB ... Ich denke, es würde mit der SQL-API funktionieren .
quelle
Hier ist ein Beispielskript, das ich vor einiger Zeit geschrieben habe. Es implementiert im Grunde das, was andrewxhill oben geschrieben hat, verwendet jedoch die Bibliothek "request" anstelle von urllib.
Es stapelt Einfügungen zu 1000 gleichzeitig und verwendet dann die API, um die Einfügungen durchzuführen.
lasbbox2cartodb.py
Das Skript durchläuft eine Reihe von Lidar-Dateien in Unterverzeichnissen und fügt die Begrenzungsrahmen für die Lidar-Dateien in CartoDB ein.
quelle