[Gfoss] Spatialite: come impostare una query unica per più tabelle?

a.furieri a lqt.it a.furieri a lqt.it
Dom 13 Gen 2013 17:58:32 CET


On Sun, 13 Jan 2013 17:35:48 +0100, Luca Mandolesi wrote:
> Salve a tutti,
> sto cercando di mettere a punto una query unica per generare un db in
> spatialite. Seguendo il prezioso cookbook di Alessandro Furieri, mi
> sono scontrato su una cosa banale probabilmente, ma di cui non riesco
> a capire la soluzione. In breve, perchè su postgres posso creare una
> tabella ed aggiungere una colonna spaziale in un'unica query, mentre
> spatialite richiede 2 passaggi distinti?
>

risposta ovvia: perche' SpatiaLite si basa su SQLite, mentre
PostGis si basa su PostgreSQL.
entrambi sono DBMS conformi ai principali standard internazionali.
ma detto questo, dal punto di vista dell'implementazione fisica e
dell'architettura sono assolutamente diversi (ed in qualche punto
sono ben poco compatibili).

giusto per dare una stima "a peso": PostgreSQL fanno circa 30 MB
di eseguibili binari, SQLite giusto un centinaio di KB
e' ovvio che SQLite riesce a fare miracoli con cosi' poco, ma e'
anche altrettanto ovvio che offre un supporto ben piu' spartano.


> Se faccio girare la query di cui sotto [0], la query crea la prima
> tabella, ma dal primo select in poi ignora tutto.
> Dove sbaglio?
>

non sbagli proprio nulla come sintassi SQL; stai semplicemente
sbagliando il contesto di esecuzione.

se provi a caricare tutte le tue istruzioni in un file di testo
(script SQL) e poi le esegui con un front-end a riga di comando
come sqlite3 oppure spatialite, scoprirai che funzionano
perfettamente.

ma se usi il connector Python (come immagino) allora devi
necessariamente eseguire un'unica istruzione SQL alla volta.
ma non e' un limite specifico di Python; e' la stessa cosa in
C/C++, Java, .NET etc
per quanto a mia conoscenza nessun connector SQL consente mai
di eseguire piu' istruzioni concatenate in un sol colpo;
devi fare per forza singole operazioni "atomiche".

ciao Sandro




> Ciao e grazie
> Luca
>
> [0]
>
> --##############################
> -- TABELLA RIPARTIZIONI SPAZIALI
> --##############################
>
> CREATE TABLE pyarchinit_ripartizioni_spaziali (
>     id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
>     id_rs character varying(80),
>     sito_rs character varying(80),
>     tip_rip character varying,
>     descr_rs character varying
> );
>
> SELECT AddGeometryColumn
> ('pyarchinit_ripartizioni_spaziali','the_geom',3004, 'POLYGON',2);
>
> --##############################
> -- TABELLA SITI
> --##############################
>
> CREATE TABLE pyarchinit_siti (
>     id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
>     id_sito character varying(80),
>     sito_nome character varying(80),
>     descr_sito character varying
> );
>
> SELECT AddGeometryColumn('pyarchinit_siti','the_geom',3004,
> 'POINT',2);


-- 
Il messaggio e' stato analizzato alla ricerca di virus o
contenuti pericolosi da MailScanner, ed e'
risultato non infetto.



Maggiori informazioni sulla lista Gfoss