Forum >> Programmazione Python >> Database >> scrivere un valore ottenuto in un database

Pagina: Indietro 1 2

Effettuato le correzioni. Sono bloccato nella scrittura dell'intera lista q. Scrive nel db solo q0(che è giusto perché nella query richiedo di scrivere solo il valore con indice 0 della lista q). Perché dici che mi scrive solamente quando i == 14?? Mi puoi spiegare gentilmente perché probabilmente non riesco a vedere un errore scritto da me. Grazieeeee ;)

--- Ultima modifica di Andrea Ubaldi in data 2018-03-07 20:56:08 ---
Perché dici che mi scrive solamente quando i == 14?? Mi puoi spiegare gentilmente perché probabilmente non riesco a vedere un errore scritto da me. Grazieeeee ;)
Temo di aver capito male infatti, Il tuo scopo è inserire solamente al verificarsi di i == 14, in tutti gli altri casi no, giusto?

Quindi quello che credevo io era che volessi inserire ad ogni passaggio, quindi una cosa del genere:
[...]
if ord(char):
    output  = int("0x"+str(ord(char)),base=16) + 1 #conversione del valore in intero
    valore = chr(output)
    i += 1
if i in [1,2,3,...]:
    lista.append(valore)
elif i == 14:
    i = 0
    print lista
curs.execute ("""insert into nome_tabella(nome_colonna) values(%s)""", lista[0])
db.commit()
print "comando inviato"
Ma ovviamente la tua intenzione è inserire il tutto esattamente al verificarsi di i == 14, allora il tuo script è indentato nella maniera corretta.

NOTA: Per aggiungere un valore ad una lista, devi usare il metodo .append() come ti ho mostrato nello script, e non c'è bisogno di creare sempre una lista nuova.

NOTA 2: Potresti non usare quella sbrodolata di if ed elif, ma semplicemente una cosa del tipo if i in [1,2,3,n]. Così si riduce tutto in attimo non trovi?

NOTA 3: Visto che stai iniziando ora, usa Python 3.

Cya



Cya
[...]
curs.execute ("""insert into nome_tabella(nome_colonna) values(%s)""", lista[0])
db.commit()
print "comando inviato"
Cosi facendo non vado ad inserire solamente il valore con indice 0 della lista (il primo valore dell'intera lista composta di 13 valori)?



Suggerimento straccettato :) e ovviamente farò queste modifiche perché senza dubbio è più semplice da leggere e più snello.
Cosi facendo non vado ad inserire solamente il valore con indice 0 della lista (il primo valore dell'intera lista composta di 13 valori)?
Ma quella non l'ho cambiata, ho copiata la tua. Forse è successo qualcosa nel copia ed incolla?

Comunque la risposta è sì (ovviamente).

Cya
ok! :) perchè è proprio quello che non riesco a risolvere cioè inserire nella query tutti valori contenuti nella lista e non solo un valore. Ho fatto svariate prove ma senza risultato.....
Bene o male lo script mi andava anche se non era snello e logicamente sbaglianto, adesso con le modifiche che mi hai consigliato è molto meglio ma questo è un problema che mi sono portato sempre dietro. Non riesco a trovare la sintassi corretta per dirgli "inserisci la lista completa".

Mi stà venendo il dubbio che l'istruzione [values(%s)] non è corretta perchè con %s gli stò dicendo che l'argomento è trattato come e presentato come una stringa e la lista forse non và interpretata come un stringa.

Queste sono delle prove che ho effettuato.
[...]""", lista[0], lista[1], lista[n])
[...]""", (lista[0], lista[1], lista[n]))
[...]""", (lista[0]), (lista[1]), (lista[n])))
Facciamo un passo indietro, la tabella nel DB dove tenti di inserire i valori quanti e che tipi di dati ha?

Cya
ho inserito una cattura come allegato su come è strutturata la tabella.

l'allegato corretto è TABBELA_REV




--- Ultima modifica di Andrea Ubaldi in data 2018-03-09 17:12:04 ---
Allegati
Bene Andrea, ora è tutto molto più chiaro, devi rivedere la composizione della query di inserimento.

Leggiti con attenzione la guida della libreria MySQLdb e leggiti anche questa risposta molto utile per i tuoi scopi.

Il problema è proprio in quella query, perché così com'è non funzionerà.

Cya



Pagina: Indietro 1 2



Esegui il login per scrivere una risposta.