[Gfoss] Spatialite e limite di parametri in una singola query

Luca Mandolesi mandoluca a gmail.com
Dom 14 Set 2014 11:03:11 CEST


Ho delle semplici interfacce grafiche in QT che visualizzano i dati,
permettono di navigare e fare delle ricerche. Quindi quando voglio fare una
ricerca, non faccio altro che svuotare le caselle di testo presenti nella
gui, uno scrive dentro il volore e lo script li associa al campo della
tabella.
Non uso il metodo interno delle QT ma passo per SQLalchemy che mi permette
di dialogare con postgres e sqlite senza cambiare nulla. Unica problema è
proprio lato SQlite che mi pone un limite di 999 parametri ricercabili
contemporaneamente.

Il giorno 13 settembre 2014 20:25, aperi2007 <aperi2007 at gmail.com> ha
scritto:

>
> >Aggirerò il problema così:
> >memorizzo in un dizionario le coppie campi/valori che creano l'istanza di
> database in un dato momento. Così non dovrò cercare gli ID tramite un IN.
>
>  Non ho chiaro quello che devi fare, ma indubbiamente vi e' un limite
> nella lunghezza della espressione.
>
> Pero' se cosi' e' , e se come ho capito te memorizzi gli ID in una tabella
> (il tuo dizionario),
> li puoi invocare cosi':
>
> where
>     campo1 IN (select valore from dizionario)
> ;
>
> Se il problema e' la lunghezza della stringa SQL che non puo superare una
> certa lunghezza,
> questa ultima sintassi dovrebbe funzionare.
>
> E forse potresti anche usare
>
> where
>    campo1 EXISTS (select valore from dizionario)
>
> A.
>
> Il 13/09/2014 19:26, Luca Mandolesi ha scritto:
>
>
>
> Il giorno 13 settembre 2014 13:45, Andrea Peri <aperi2007 at gmail.com> ha
> scritto:
>
>> Io non userei una serie smisurata di AND,
>> anche perche' metti a dura prova l'ottimizzatore della query.
>>
>> Proverei a usare invece il costrutto IN
>>
>> where
>>  campo1 IN ('valore1','valore2','valore3',.....)
>>
>
>  No, non funzia, lo vede sempre come un eccesso di patametri
>
>
>>
>> Anche su postgres.
>>
>
>  Postgres digerisce anche i sassi. Non ha problemi
>
>
>>
>> prova e facci sapere se questo ammette piu valori di 999
>>
>
>
>  Aggirerò il problema così:
> memorizzo in un dizionario le coppie campi/valori che creano l'istanza di
> database in un dato momento. Così non dovrò cercare gli ID tramite un IN.
>
>  Nel caso avessi un'istanza di database che corrisponde a tutti i record
> faro solo una query id > 0.
>
>  Per eliminare per esempio più di 1000 record non farò altri che
> segmentare i delete in pacchetti da 500.
>
>
>
>
>
>>
>>
>> --
>> -----------------
>> Andrea Peri
>> . . . . . . . . .
>> qwerty àèìòù
>> -----------------
>>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gfoss.it/pipermail/gfoss/attachments/20140914/1381f533/attachment.html>


Maggiori informazioni sulla lista Gfoss