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

_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a