[Python] delimitatori testo in sqlite

Massimo Capanni massimo.capanni a gmail.com
Ven 5 Nov 2010 14:20:31 CET


*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
>
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: http://lists.python.it/pipermail/python/attachments/20101105/3511fbd1/attachment.htm 


Maggiori informazioni sulla lista Python