psycopg2 en realidad no está insertando datos

Necesito insertar datos JSON desde tornado a postgres, así que aquí hay una prueba como esta:

from psycopg2 import connect conn = connect("user='pguser' host='localhost' dbname='pgdb' password='pgpass'") cursor = conn.cursor() data = '[{"id":"sdf","name":"wqe","author":"vb"}]' for row in eval(data): print row cursor.execute("""INSERT INTO books(id,name,author) VALUES('%s','%s','%s')""" % \ (row['id'], row['name'], row['author']) ) >>> cursor.execute("SELECT * FROM books") >>> cursor.fetchall() [('sdf', 'wqe', 'vb')] >>> $> psql -d pgdb -U pguser -W Password for user pguser: psql (9.1.6) Type "help" for help. pgdb=> select * from books; id | name | author ----+------+-------- (0 rows) 

Como puede ver después de hacer select en el shell de python, hay algunos datos, pero en psql hay 0 filas! ¿Qué puedo estar haciendo mal?

Python 2.7.2+

Usted no cometió la transacción.

Psycopg2 abre una transacción automáticamente, y debe decirle que se comprometa para que los datos sean visibles para otras sesiones.

Consulte las preguntas frecuentes sobre psycopg2 y el método connection.commit() .