Saya mencoba menulis fungsi dengan Python yang akan menggunakan API CartoDB untuk menulis data ke salah satu tabel saya. Adakah yang punya contoh sederhana yang menunjukkan cara melakukan ini yang bisa saya gunakan untuk memulai?
8
Menulis data melalui API sangat sederhana. Inilah yang paling mendasar,
Misalkan kita sudah memiliki dua variabel, bagaimana Anda mendapatkannya terserah Anda,username = 'cartodb-user-name'
apikey = 'MY-CARTODB-API-KEY'
Selanjutnya, mari kita buat pernyataan INSERT untuk digunakan
insert = "INSERT INTO my_table_name (the_geom, measure) VALUES (CDB_LatLng(43, -120), 22.0)"
Buat titik akhir URL untuk API akun kami
url = "https://%s.cartodb.com/api/v1/sql" % username
Buat objek yang berisi parameter permintaan kami
params = {
'api_key' : apikey, # our account apikey, don't share!
'q' : insert # our insert statement above
}
Kirim permintaan menggunakan urllib2
req = urllib2.Request(url, urllib.urlencode(params))
response = urllib2.urlopen(req)
import urllib
import urllib2
Berikut adalah contoh strategi penyisipan multi-baris (3). Saya menggunakan array untuk awalnya menyimpan semua nilai baris saya. Setiap nilai baris adalah daftar yang dibatasi koma, dibungkus dengan tanda kurung dan disimpan ke array,
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)
Dengan menggunakan ini, saya telah membungkus semua 3 baris menjadi satu http
permintaan. Ini bekerja lebih cepat di sekitar dan sangat dianjurkan. Dari pengalaman pribadi 100-250 baris sekaligus bekerja dengan sangat baik.
Ada pustaka python untuk CartoDB ... Saya pikir ini akan bekerja dengan SQL API .
sumber
Berikut ini contoh skrip yang saya tulis beberapa waktu lalu. Pada dasarnya mengimplementasikan apa yang ditulis andrewxhill di atas, tetapi menggunakan pustaka "permintaan" alih-alih urllib.
Ini mengumpulkan secara bersamaan sisipan untuk melakukan 1000 sekaligus, kemudian menggunakan API untuk melakukan sisipan.
lasbbox2cartodb.py
Script loop lebih dari satu set file Lidar di subdirektori, dan menyisipkan kotak pembatas untuk file lidar ke CartoDB.
sumber