Forum
>>
Programmazione Python
>>
Database
>>
Inserire variabili MySQLdb
Pagina: 1
Esegui il login per scrivere una risposta.
Pagina: 1
Scritto da khan |
2015-09-07 13:38:21 - Inserire variabili MySQLdb
|
ciao a tutti uso python 2.7 ed ho dei dati in un array da inserire nel mio database mysql,il codice:
import MySQLdb db=MySQLdb.connect(host='host', user='root', passwd='pas', db='test' ) cur=db.cursor() a=[formaggio,patate,spezzatino] for x in range (len(a)): print ax cur.execute("INSERT INTO `test`.`tabella` (spesa)VALUES (%s)",(ax)) print ("Fine") Non scrivo i vari input,perché il problema è qui,infatti INSERT va a buon fine perché l'id viene incrementato ma il valore non viene inserito,quindi rimane vuoto :\ |
|
Scritto da Daniele aka Palmux |
2015-09-07 18:04:19 - Re: Inserire variabili MySQLdb
|
Ciao Khan, rivedi il tuo ciclo di inserimento con qualcosa di simile al seguente:
for x in a: cur.execute("INSERT INTO `test`.`tabella`(spesa) VALUES(%s)",(x))Nota: assolutamente non è testato, quindi fai qualche prova. Ciao. Daniele --- Ultima modifica di Daniele aka Palmux in data 2015-09-07 20:01:41 --- |
|
Scritto da khan |
2015-09-07 18:41:13 - Re: Inserire variabili MySQLdb
|
a[ x ] non ax; comunque ho fatto così ma:
cur.execute("INSERT INTO `test`.`tabella` (spesa) VALUES (%s)" %a[ x ]) OperationalError: (1054, "Unknown column 'formaggio' in 'field list'") spero che si vedano le quadre. ho inserito dei dati manualmente: questo è lo script che mi propone il db :/ INSERT INTO `test`.`tabella` (`spesa`) VALUES ('prova'); consigli? --- Ultima modifica di khan in data 2015-09-07 18:42:15 --- |
|
Scritto da Daniele aka Palmux |
2015-09-07 20:10:11 - Re: Inserire variabili MySQLdb
|
No, non è corretto. Prova a "ciclare" la tua lista, cosa ottieni?
>>> a = ["formaggio","patate","spezzatino"] >>> for i in a: ... print i formaggio patate spezzatino Ecco, quelli sono i valori che vuoi inserire. Quindi trasliamo tutto sulla tua query: [...] for i in a: cur.execute("INSERT INTO `test`.`tabella` (spesa) VALUES(%s)",(i,)) [...]Prova così e fai sapere. Cya --- Ultima modifica di Daniele aka Palmux in data 2015-09-07 21:15:20 --- |
|
Scritto da khan |
2015-09-07 20:23:40 - Re: Inserire variabili MySQLdb
|
Ok,il problema è il database. ma non capisco il perché :/ cioè l'id aumenta ma il valore non è inserito,che sia esso un elemento di una lista,una variabile o qualsiasi altro elemento non va.
Uso mysql workbench 6.3 CE. in locale Mi potresti consigliare un altro database? --- Ultima modifica di khan in data 2015-09-07 20:40:30 --- |
|
Scritto da Daniele aka Palmux |
2015-09-07 21:22:35 - Re: Inserire variabili MySQLdb
|
Guarda non amo MySQL, ma sono certo che il problema non sia nel database.
Commetti qualche errore, come l'ho commesso io nell'esempio sopra omettendo una virgola (infatti l'input deve essere una tupla).
Mi ripeto, è un problema di pilota, non di macchina. Cya |
|
Scritto da khan |
2015-09-07 22:49:36 - Re: Inserire variabili MySQLdb
|
Ok risultato parziale-cioè da capire(:-
import _mysql db=_mysql.connect("localhost","root","pass","test") db.query("""INSERT INTO `test`.`tabella` (spesa) VALUES('prova')""") ok questo mi va,adesso sto cercando di ficcarci dentro la variabile i primi tentativi sono: for x in range (len(a)): db.query("INSERT INTO `test`.`tabella` (spesa) VALUES(%s)",(a[ x ])) db.query("INSERT INTO `test`.`tabella` (spesa) VALUES(%s)",(ax)) TypeError: query() takes exactly 1 argument (2 given) for i in a: print (i) db.query("""INSERT INTO `test`.`tabella` (spesa) VALUES(%s)""",(i)) db.query("""INSERT INTO `test`.`tabella` (spesa) VALUES(%s)""",(i)) TypeError: query() takes exactly 1 argument (2 given) |
|
Scritto da Daniele aka Palmux |
2015-09-08 15:07:09 - Re: Inserire variabili MySQLdb
|
Khan ci stai girando intorno al problema, ma se leggi con attenzione quanto ti ho scritto è già risolto. Prima una nota sull'ultimo tuo messaggio.
If you want to write applications which are portable across databases, use MySQLdb, and avoid using this module directly. _mysql provides an interface which mostly implements the MySQL C API. For more information, see the MySQL documentation. The documentation for this module is intentionally weak because you probably should use the higher-level MySQLdb module. If you really need it, use the standard MySQL docs and transliterate as necessary. Quindi tornando a noi ti scrivo il codice completo che ho appena testato e funziona, stai attento anche alle singole virgole, ieri un nostro "collega" del forum mi ha fatto notare che avevo commesso una leggerezza che forse ti ha distratto. Inoltre dimmi come è composta la tabella, sopratutto che tipo di colonne hai creato. Immagino che la colonna spesa sia un varchar e quindi il codice sarebbe: #Importo il modulo e mi connetto import MySQLdb db = MySQLdb.connect(host = 'host', user = 'root', passwd = 'pas', db = 'test') cursore = db.cursor() #Lista da inserire a = ["formaggio","patate","spezzatino"] #Ciclo la lista e la inserisco for i in a: cursore.execute("INSERT INTO `test`.`tabella`(spesa) VALUES(%s)",(i,)) db.commit() db.close() Visto che il markdown fa come cazzo vuole, ti ho messo tutto anche su Pastebin così non puoi sbagliare. Cya --- Ultima modifica di Daniele aka Palmux in data 2015-09-08 17:39:54 --- |
|
Scritto da khan |
2015-09-09 01:10:48 - Re: Inserire variabili MySQLdb
|
Funziona *-*
Grazie del tempo speso,e scusa il disturbo (: |
|
Scritto da Daniele aka Palmux |
2015-09-09 14:27:02 - Re: Inserire variabili MySQLdb
|
Non è un disturbo, è un piacere.
Ciao. Daniele |
Pagina: 1
Esegui il login per scrivere una risposta.