2012-08-24 13 views
12

Il seguente codice non genera un errore. Ma non inserisce alcun valore nel mio database. Hanno rimosso tutti i vincoli dalla tabella tranne l'indice sulla chiave primaria. I due campi sono entrambi stringhe. Qualche idea? La cosa più confusa è che nessun errore viene registrato.Nessun errore registrato con errore Postgres/Psycopg2 copy_from

conn = psycopg2.connect("dbname=<mydbname> user=postgres password=<mypassword>") 
cur = conn.cursor() 
output = StringIO.StringIO() 
output.write('Citizen Caine\tMy_API_id\n') 
cur.copy_from(output, 'movie', columns=('title','api_id')) 
conn.commit() 
+1

Dov'è il tuo commit()? –

+0

Questa è una buona presa, ma è stata omessa solo dalla mia prima bozza qui. Il commit è nel mio codice e non si sta aggiornando. –

risposta

17

Ho lottato anche con questo. Alcuni conoscenza nascosta è che devi fare un:

output.seek(0) #put the position of the buffer at the beginning 

dopo la vostra write, o se si sta spostando da database a database, dopo aver fatto un copy_to.

E 'facile dimenticare che StringIO oggetti hanno tutti gli stessi metodi e gli attributi di un file object.

+2

Questo l'ha fatto. GRAZIE! –

+0

Penso di averlo fatto. Ho perso la connessione quando ho inviato il commento. –

Problemi correlati