[Python] Problemi in scrittura DB con executemany()
Francesco Martino
francesco.martino a unipd.it
Lun 6 Ott 2008 21:21:15 CEST
Salve a tutti,
chiedo aiuto perchè ho difficoltà nel creare una nuova tabella in un
database già esistente. Come DB uso MySql, che gira in locale;
quello che voglio fare è prendere alcuni dati dal DB esistente, e creare
una nuova tabella che immagazzini questi dati,.
Riporto il codice che ho scritto
****************************************************************************************************************
import MySQLdb
db = MySQLdb.connect(host = 'localhost', db = 'nome_db', user = 'user',
passwd = 'password')
cur = db.cursor()
def createTable(cur):
curs.execute('SELECT tab1.valA, tab1.valB, tab2.valC, tab2.valD\
FROM tab1 JOIN tab2 \
ON tab1.valE = tab2.valE\
WHERE tab1.valA>0')
for data in cur.fetchall():
dataList.append(data)
cur.execute('CREATE TABLE tab3 (\
valA char(50),\
valB char(50),\
valC char(50),\
valD char(50))')
print 'tabella costruita...'
curs.executemany("INSERT INTO tab3 (valA, valB, valC, valD) \
VALUES (%s,%s,%s,%s)", dataList)
print 'valori inseriti'
if __name__= '__main__':
createTable(cur)
****************************************************************************************************************
Il problema è che la tabella rimane vuota: sono create le voci, ma
sebbene il programma termini senza errori nome_db.tab3 risulta una
tabella con 0 righe.
Se do la medesima istruzione direttamente in MySql, la tabella creata è
invece corretta (con circa un migliaio di righe).
Aggiungo che ho anche provato a mettere direttamente il codice CREATE
... SELECT nello stessa istruzione con executemany(), ma anche quella mi
da lo stesso problema.
Qualcuno sa dirmi dove sbaglio?
Grazie,
Francesco
Maggiori informazioni sulla lista
Python