Python 连接 PostgreSQL 的最著名的库可能是psycopg2。psycopg2 是一个简单易用的库,适合想要简单操作 SQL 的人。用法基本上很简单,但是当我尝试通过 psycogpg2 将记录写入 PostgreSQL 时,我被卡住了。在这里,我写了一个这样的查询。

import psycopg2

conn = psycopg2.connect(host=pg_credential.hostname,
                        port=pg_credential.port,
                        user=pg_credential.username,
                        password=pg_credential.password,
                        database=pg_credential.path[1:]) # To remove slash

cursor = conn.cursor()
cursor.execute("INSERT INTO a_table (c1, c2, c3) VALUES(%s, %s, %s)", (v1, v2, v3))
cursor.close()
conn.close()

但我看不到任何数据a_table。查询本身似乎很好,因为我们可以插入查询。为什么数据没有正确插入?我花了一些时间寻找答案,终于找到了解决方案。

我们需要调用commit游标对象。简而言之,我们需要编写如下代码。

import psycopg2

conn = psycopg2.connect(host=pg_credential.hostname,
                        port=pg_credential.port,
                        user=pg_credential.username,
                        password=pg_credential.password,
                        database=pg_credential.path[1:]) # To remove slash

cursor = conn.cursor()
cursor.execute("INSERT INTO a_table (c1, c2, c3) VALUES(%s, %s, %s)", (v1, v2, v3))
conn.commit() #  
  
 

由于我通常使用commit唯一的事务操作,所以我认为当我不使用事务时,没有必要调用它来简单地插入数据。所以那是我的错。我们应该仔细检查文档,尤其是当我们为我们使用新库时。psycopg2 文档在这里。