[Python] delimitatori testo in sqlite

Vittorio Zuccala' vittorio.zuccala a gmail.com
Ven 5 Nov 2010 14:36:59 CET


Ciao Massimo,
come ti dicevo ecco che postando il codice, debuggare diventa più semplice
:-)
Le istruzioni sono corrette.
Il problema sta nel fatto che se metti gli apici singoli per risolvere il
fatto che Dottor Sax e altri hanno i doppi apici... non devi mettere altri
singoli apici, sebbene nella nostra lingua possa essere apostrofi dentro la
frase.
Ok è una frase lunghissima dove non si capisce una fava ma quello che voglio
dire è che se:

   - dell'infanzia diventa della infanzia
   - dell'Ombra diventa della Ombra

Allora tutto va a posto. Prova con questo insert:

insert into pippo (b, c) values ('12/10/2010', 'Le esperienze della infanzia
e della prima adolescenza, insieme ai giochi che intrattenava con gli amici,
saranno al centro di una successiva opera, il "Dottor Sax": la figura del
Dottor Sax fu modellata da Kerouac su quella della Ombra, protagonista di un
programma radiofonico settimanale. Nel 1939 si diploma alla "Lowell High
School" e in questo anno intreccia una relazione amorosa, che non oltrepassa
i confini di una casta infatuazione, con Mary Carney: questa relazione
amorosa verrà rievocata in "Maggie Cassidy".');


Il giorno 05 novembre 2010 14:20, Massimo Capanni <massimo.capanni a gmail.com
> ha scritto:

>
> *imbarazzato* ... :-)
>
> grazie di tutti i suggerimenti, li provero' subito!
>
> per la cronaca questo erano le istruzioni 'a manina' che effettuavo:
>
> ++++++++++++++++++++++++++++++++++++++++++++++++++
>
> .header ON
> .mode column
>
> create table pippo (a integer primary key autoincrement, b text, c text);
>
> insert into pippo (b, c) values ('12/10/2010', 'Le esperienze dell'infanzia
> e della prima adolescenza, insieme ai giochi che intrattenava con gli amici,
> saranno al centro di una successiva opera, il "Dottor Sax": la figura del
> Dottor Sax fu modellata da Kerouac su quella dell'Ombra, protagonista di un
> programma radiofonico settimanale. Nel 1939 si diploma alla "Lowell High
> School" e in questo anno intreccia una relazione amorosa, che non oltrepassa
> i confini di una casta infatuazione, con Mary Carney: questa relazione
> amorosa verrà rievocata in "Maggie Cassidy".');
>
> select * from pippo;
> .exit
>
> ++++++++++++++++++++++++++++++++++++++++++++++++++
>
> a presto,
>
> max
>
> Il giorno 05 novembre 2010 12:21, Daniele Varrazzo <piro a develer.com> ha
> scritto:
>
> On Fri, 5 Nov 2010 09:33:08 +0100, Massimo Capanni
>> <massimo.capanni a gmail.com> wrote:
>>
>> > forse e' una sciocchezza ma faccio lo stesso questa domanda:
>> > sto cercando di implementare un semplice database con Sqlite,
>> > e sto facendo alcune prove a mano direttamente con Sqlite stesso.
>> >
>> > Il database di prova contiene una tabella del genere:
>> >
>> > pippo (a integer primary key autoincrement, b text, c text);
>> >
>> > Cerco di inserire del testo a caso da qualche testo ma, se
>> > nella copia sono presenti doppi apici o singoli apici Sqlite
>> > mi comunica che non è correttamente identato. Secondo
>> > voi dovrei implementare un controllo dell'identazione degli
>> > apici prima dell'inserimento, con una funzione Python,
>> > oppure esiste una funzione che automaticamente risolve
>> > questo problema durante l'input?
>>
>> Certo che esiste! E se provi a quotare a mano le stringhe, arriva la
>> fatina dell'SQL... e ti spezza le ditina! :)
>>
>> cursor.execute() prende due argomenti: la stringa sql con dei segnaposto
>> (in sqlite sono dei "?") e una sequenza di variabili: *ci pensa lui* a
>> metterle insieme e a gestirsi gli apici.
>>
>> >>> cur.execute("SELECT ?, ?;", (42, "l'apostrofo")).fetchone()
>> (42, u"l'apostrofo")
>>
>> Letture fondamentali prima di fare qualunque cosa con i database in
>> python:
>>
>> * la DB-API, comune a tutti i moduli database python di qualche rilevanza
>>  http://www.python.org/dev/peps/pep-0249/
>> * http://en.wikipedia.org/wiki/SQL_injection
>> * http://xkcd.com/327/
>>
>> Nella doc di psycopg ci sono più dettagli su perché la fatina dell'SQL si
>> arrabbia (ti ho già detto che è pelosa?):
>> <
>> http://initd.org/psycopg/docs/usage.html#passing-parameters-to-sql-queries
>> >.
>> Fai le dovute differenze perché psycopg usa "%s" invece di "?" come
>> segnaposto.
>>
>> A presto!
>>
>> --
>> Daniele Varrazzo - Develer S.r.l.
>> http://www.develer.com
>> _______________________________________________
>> Python mailing list
>> Python a lists.python.it
>> http://lists.python.it/mailman/listinfo/python
>>
>
>
> _______________________________________________
> Python mailing list
> Python a lists.python.it
> http://lists.python.it/mailman/listinfo/python
>
>
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: http://lists.python.it/pipermail/python/attachments/20101105/51d01df7/attachment.htm 


Maggiori informazioni sulla lista Python