Python 为什么我插入AWS Postgres数据库(使用psycopg2)的任何行都会立即变成一个死元组?

Python 为什么我插入AWS Postgres数据库(使用psycopg2)的任何行都会立即变成一个死元组?,python,postgresql,amazon-rds,psycopg2,pgadmin,Python,Postgresql,Amazon Rds,Psycopg2,Pgadmin,将psycopg2连接到AWS Postgres服务器并插入行时出现问题。 下面是一个测试脚本,它尝试连接到服务器并插入一行。当我在pgAdmin中使用测试查询时,它可以工作。也就是说,它运行成功并且可以选择行 当我运行python脚本时,服务器显示已建立连接。没有抛出异常。我甚至可以尝试插入大约一百行,这样的话,流量就会大幅增加。然而,在表格中却找不到任何东西 import psycopg2 from getpass import getpass ​ # connect to database

将psycopg2连接到AWS Postgres服务器并插入行时出现问题。 下面是一个测试脚本,它尝试连接到服务器并插入一行。当我在pgAdmin中使用测试查询时,它可以工作。也就是说,它运行成功并且可以选择行

当我运行python脚本时,服务器显示已建立连接。没有抛出异常。我甚至可以尝试插入大约一百行,这样的话,流量就会大幅增加。然而,在表格中却找不到任何东西

import psycopg2
from getpass import getpass
​
# connect to database
try:
    connection = psycopg2.connect(
        dbname    = "postgres",
        user      = "username",
        password  = getpass(),
        host      = "blahblah.us-east-1.rds.amazonaws.com",
        port      = '5432'
    )
    print("connected!")
except:
    print("oops")
​
#cursor object
cursor_boi = connection.cursor()
​
# simple test query
test_query = """INSERT INTO reviews (review_id, username, movie_id, review_date, review_text, review_title, user_rating, helpful_num, helpful_denom) 
VALUES (1, 'myname', 12345678, '2016-06-23', 'I love this movie!', 'Me happy', 5, 6, 12 )"""
​
# execute query
try:
    cursor_boi.execute(test_query)
    print(test_query)
except:
    print("oopsie!")
​
# close connection
if(connection):
    cursor_boi.close()
    connection.close()
数据库统计信息为我的“评论”表报告了以下内容:

插入的元组:257

元组删除:1

死元组:8

上次自动真空:2019-12-13 15:49:20.369715+00


每次运行Python脚本时,Dead Tuples字段都会增加。所以我插入的每一条记录似乎都会立即变成一个死元组。为什么会这样,我怎样才能阻止它?我想这些记录正在被覆盖,但如果是这样的话,它们就不会被任何东西替换。

解决了。我忘记使用
connection.commit()
提交连接。谢谢@roganjosh

因为您不需要
connection.commit()
更改。您只需关闭连接。@roganjosh我刚才想到了这一点,并在
cursor\u boi.close()之前添加了
connection.commit()
。但它不能解决问题。等等,它成功了!谢谢。这回答了你的问题吗@richyen给出了问题、讨论和张贴的答案,为什么你认为这与一个傻瓜有关?