J'essaie d'écrire une fonction en Python qui utilisera l'API CartoDB pour écrire des données dans l'une de mes tables. Quelqu'un at-il un exemple simple qui montre comment faire cela que je peux utiliser pour commencer?
8
L'écriture de données via l'API est assez simple. Voici le plus basique,
Supposons que nous ayons déjà deux variables, la façon de les obtenir dépend de vous,username = 'cartodb-user-name'
apikey = 'MY-CARTODB-API-KEY'
Ensuite, permet de créer une instruction INSERT à utiliser
insert = "INSERT INTO my_table_name (the_geom, measure) VALUES (CDB_LatLng(43, -120), 22.0)"
Créez le point de terminaison URL pour notre API de compte
url = "https://%s.cartodb.com/api/v1/sql" % username
Créer un objet contenant les paramètres de notre demande
params = {
'api_key' : apikey, # our account apikey, don't share!
'q' : insert # our insert statement above
}
Envoyer la demande en utilisant urllib2
req = urllib2.Request(url, urllib.urlencode(params))
response = urllib2.urlopen(req)
import urllib
import urllib2
Voici un exemple de stratégie d'insertion à plusieurs lignes (3). J'utilise un tableau pour stocker initialement toutes mes valeurs de ligne. Chaque valeur de ligne est une liste séparée par des virgules, entourée de parenthèses et stockée dans le tableau,
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)
En utilisant cela, j'ai encapsulé les 3 lignes dans une seule http
demande. Il fonctionne plus rapidement tout autour et est fortement recommandé. D'après une expérience personnelle, 100-250 lignes à la fois fonctionnent très bien.
Il existe une bibliothèque python pour CartoDB ... Je pense que cela fonctionnerait avec l' API SQL .
la source
Voici un exemple de script que j'ai écrit il y a quelque temps. Il implémente essentiellement ce que andrewxhill a écrit ci-dessus, mais utilise la bibliothèque "requests" au lieu de urllib.
Il regroupe les insertions pour en faire 1000 à la fois, puis utilise l'API pour effectuer les insertions.
lasbbox2cartodb.py
Le script parcourt un ensemble de fichiers Lidar dans des sous-répertoires et insère les cadres de délimitation des fichiers lidar dans CartoDB.
la source