PDA

View Full Version : [Python]Inserimento dati in db MySql


Raiki
12-04-2009, 09:18
Giorno,
ho deciso di provare python per poter utilizzare MySQL come db.Di sotto c'e' il codice che ho scritto.Questo in teoria dovrebbe connettersi al db e inserire dei dati,ma non lo fa'.


#!/usr/bin/env python
#---------------------------------------------------------------------------------------#-----
import time
import MySQLdb
conn = MySQLdb.connect(host='localhost',user='xxxxxxx',passwd='xxxxxxxxxx',db='database')
cur = conn.cursor()
#---------------------------------------------------------------------------------------#-----
try:
cur.execute('USE db')
cur.execute('INSERT INTO table(campo1,campo2,campo3) VALUES(%d,%s,%s)',('0123456789','Mario','Rossi'))
except:
print 'ERRORE NELL INSERIMENTO DEI DATI'
time.sleep(1)
conn.close()
#---------------------------------------------------------------------------------------#-----
conn.close()


Se provo ad aprire il database e provo a eseguire questa query

SELECT * FROM table

Mi dice che la tabella e' vuota.Dove sbaglio?

stdecden
12-04-2009, 10:48
prova a scrivere così

'INSERT INTO table(campo1,campo2,campo3) VALUES(%d,"%s","%s");'

Raiki
12-04-2009, 10:56
Modificando il codice come dici tu mi parte l'except

stdecden
12-04-2009, 11:01
Premetto che non mi intendo molto di python ma se inserisci testo non dovresti utilizzare gli apici doppi all'inizio e alla fine come in questo esempio che ho trovato su di una pagina web:

mysql> INSERT INTO employee_data
-> (f_name, l_name, title, age, yos, salary, perks, email)
-> values
-> ("Manish", "Sharma", "CEO", 28, 4, 200000,
-> 50000, "manish@bignet.com");
Query OK, 1 row affected (0.00 sec)

cdimauro
12-04-2009, 15:23
Giorno,
ho deciso di provare python per poter utilizzare MySQL come db.Di sotto c'e' il codice che ho scritto.Questo in teoria dovrebbe connettersi al db e inserire dei dati,ma non lo fa'.


#!/usr/bin/env python
#---------------------------------------------------------------------------------------#-----
import time
import MySQLdb
conn = MySQLdb.connect(host='localhost',user='xxxxxxx',passwd='xxxxxxxxxx',db='database')
cur = conn.cursor()
#---------------------------------------------------------------------------------------#-----
try:
cur.execute('USE db')
cur.execute('INSERT INTO table(campo1,campo2,campo3) VALUES(%d,%s,%s)',('0123456789','Mario','Rossi'))
except:
print 'ERRORE NELL INSERIMENTO DEI DATI'
time.sleep(1)
conn.close()
#---------------------------------------------------------------------------------------#-----
conn.close()


Se provo ad aprire il database e provo a eseguire questa query

SELECT * FROM table

Mi dice che la tabella e' vuota.Dove sbaglio?
Mi sembra tutto a posto. Personalmente non uso l'istruzione USE db, perché già nella connect specifico quale db utilizzare.

Poi nelle query uso soltanto %s per indicare i valori.

Così mi funziona tutto (da quattro anni e mezzo ormai).

Raiki
13-04-2009, 09:35
Mi sembra tutto a posto. Personalmente non uso l'istruzione USE db, perché già nella connect specifico quale db utilizzare.

Poi nelle query uso soltanto %s per indicare i valori.


Infatti io in quel codice non riesco proprio a capire dove sbaglio.USE db lo uso per sicurezza personale:D .Nel codice originale anche io avevo messo tutte %s ma pensavo che era quello l'errore e l'ho rimpiazzato con %d.Invece non c'entra un cavolo,mi sono illuso da bravo niubbo:rolleyes: