2012-02-07 12 views
6

Estoy tratando de averiguar cómo usar la biblioteca MySQLdb en Python (soy novato en el mejor de los dos).¿Por qué la función 'insertar' no agrega filas usando MySQLdb?

estoy siguiendo el código here, específicamente:

cursor = conn.cursor() 
cursor.execute ("DROP TABLE IF EXISTS animal") 
cursor.execute (""" 
    CREATE TABLE animal 
    (
    name  CHAR(40), 
    category CHAR(40) 
    ) 
""") 
cursor.execute (""" 
    INSERT INTO animal (name, category) 
    VALUES 
    ('snake', 'reptile'), 
    ('frog', 'amphibian'), 
    ('tuna', 'fish'), 
    ('racoon', 'mammal') 
""") 
print "Number of rows inserted: %d" % cursor.rowcount 
cursor.close() 
conn.close() 

puedo cambiar el código para crear o eliminar tablas, pero no puedo conseguir que en realidad cometió el INSERT. Devuelve el valor row.count como se esperaba (incluso cuando cambio el valor en la tabla, cambia a lo que espero que sea).

Cada vez que miro en la base de datos con PHPMyAdmin no hay inserciones realizadas. ¿Cómo confirmo el INSERT a la base de datos?

Respuesta

15

Olvidas commit cambios de datos, confirmación automática está desactivada por defecto:

cursor.close() 
    conn.commit() 
    conn.close() 

Citando Writing MySQL Scripts with Python DB-API documentación:

"El objeto de conexión commit() método se compromete cualquier cambio en circulación en la transacción actual para hacerlos permanentes en la base de datos. En DB-API, las conexiones comienzan con el modo autocommit desactivado, por lo que debe call commit() antes de desconectarse ting o cambios pueden perderse ".

+0

Aw man. Gracias. ¡Esa es una lección que no olvidaré de nuevo! Por supuesto, eso funciona. (¡Y tenía todas las pistas en mi pregunta! Suspiro.) –

+2

@JayGattuso, tienes razón, tu pregunta contiene la respuesta: "pero no puedo conseguir que se me envíe el INSERT" – danihp

Cuestiones relacionadas