为什么我插入到我的AWS Postgres数据库(带有psycopg2)的任何行都立即变成无效的元组?

问题描述 投票:0回答:1

将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字段都会增加。因此,似乎我立即插入的每条记录都变成了无效的元组。为什么会这样,我该如何制止它?我想这些记录将被覆盖,但是如果是这样,它们就不会被任何东西替换。

python postgresql amazon-rds psycopg2 pgadmin
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.