[Python] python 3,3 e sqlite

Daniele Varrazzo piro a develer.com
Mar 25 Mar 2014 16:23:38 CET


On 2014-03-25 15:13, Filippo Dal Bosco - wrote:
> il campo  symbol è text
>
> Perchè questo funziona
>
> c.execute('insert into portfolio (symbol) values (?)', ('x'))
>
> e questo NON funziona ( dice gli passo troppi valori)
> c.execute('insert into portfolio (symbol) values (?)', ('xx'))

Probabilmente perchè il modulo sqlite si aspetta una sequenza come 
parametri. ('xx') non è una tupla, ma una stringa tra parentesi, che è 
una espressione uguale ad una stringa e basta. Una stringa *È* una 
sequenza: la tua è di due elementi (due caratteri). Quindi gli sembra 
che gli stai passando due parametri mentre la query ha solo un 
segnaposto. bum.

Puoi usare ('xx',) che è il modo di creare una tupla di un solo 
elemento, oppure ['xx'] che è una lista di un solo elemento.

Sei in buona compagnia: è l'errore più frequente commesso usando 
database da Python.


-- Daniele



Maggiori informazioni sulla lista Python