tutorial - python psycopg2 query example



psycopg2 fügt keine Daten ein (1)

Ich muss JSON-Daten von Tornado in Postgres einfügen.

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)

Wie Sie sehen, nachdem Sie select in der Python-Shell ausgewählt haben, gibt es einige Daten, aber in psql gibt es 0 Zeilen! Was kann ich falsch machen?

Python 2.7.2 und höher


Sie haben die Transaktion nicht festgeschrieben.

Psycopg2 öffnet automatisch eine Transaktion, und Sie müssen sie zum Festschreiben verpflichten, um die Daten für andere Sitzungen sichtbar zu machen.

Siehe die psycopg2-FAQ und die Methode connection.commit() .





psycopg2