Python 为什么我插入AWS Postgres数据库(使用psycopg2)的任何行都会立即变成一个死元组?
将psycopg2连接到AWS Postgres服务器并插入行时出现问题。 下面是一个测试脚本,它尝试连接到服务器并插入一行。当我在pgAdmin中使用测试查询时,它可以工作。也就是说,它运行成功并且可以选择行 当我运行python脚本时,服务器显示已建立连接。没有抛出异常。我甚至可以尝试插入大约一百行,这样的话,流量就会大幅增加。然而,在表格中却找不到任何东西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
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给出了问题、讨论和张贴的答案,为什么你认为这与一个傻瓜有关?