psycopg2不是实际插入数据(psycopg2 not actually inserting d

2019-07-04 13:38发布

我需要从龙卷风的Postgres插入JSON数据,所以这里的测试是这样的:

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)

你可以这样做后,看到select在Python Shell,有一些数据,但在psql里有0行! 什么可能我是做错了什么?

Python的2.7.2+

Answer 1:

你没有提交事务。

Psycopg2自动打开一个事务,你必须告诉它,以使对其他会话可见的数据提交。

见的psycopg2 FAQ和connection.commit()方法 。



文章来源: psycopg2 not actually inserting data