On Fri, 5 Nov 2010 09:33:08 +0100, Massimo Capanni <massimo.capa...@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@lists.python.it http://lists.python.it/mailman/listinfo/python