我有以下过程没有按预期将数据加载到表中:
def upload_data(parsed_buffer):
parsed_buffer.seek(0)
try:
con = psycopg2.connect(database=database, user=user, password=pw, host=host)
cur = con.cursor()
try:
cur.copy_from(parsed_buffer, 'staging.vcf_ht')
except StandardError, err:
conn.rollback()
print(" Caught error (as expected):\n", err)
except psycopg2.NotSupportedError as e:
now = time.strftime("%H:%M:%S +0000", time.localtime())
print("Copy failed at: " + now + " - " + e.pgerror)
sys.exit(1)
finally:
if con:
con.close()
now = time.strftime("%H:%M:%S +0000", time.localtime())
print('Finished loading data at:' + now)
在其他帖子中,他们讨论在写入后添加搜索功能。这是我的代码的第3行。这没用。我检查了几件其他的事情。 1.字符串缓冲区填充了制表符分隔的数据。 2.如果我将输出重定向到一个文件并在psql中使用\ copy命令,它就像宣传的那样工作。 3.如果我写一个insert语句而不是字符串缓冲区,这也有效(但这对性能不利)。抛出任何错误都会终止此过程。
答案 0 :(得分:2)
问题是没有提交声明。补充:con.commit()