Psycopg2关系数据库不存在

2024-10-04 09:27:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我最近开始使用Macbook,因为我的笔记本电脑在工作中被更换了,而就在那之后,我开始对用于将数据帧上传到postgresql数据库的一些代码产生问题

import psycopg2
from io import StringIO

def create_connection(user,password):
    return psycopg2.connect(
    host='HOST',
    database='DBNAME',
    user=user,
    password=password)

conn = create_connection(user,password)

table = "data_analytics.tbl_summary_wingmans_rt"
buffer = StringIO()
df.to_csv(buffer, header=False, index=False)
buffer.seek(0)
cursor = conn.cursor()
cursor.copy_from(buffer, table, sep=",", null="")
conn.commit()
cursor.close()

正如您所看到的,代码非常简单,甚至在更换设备之前,它在Windows上运行时也没有出现重大问题。但当我在mac上运行相同的代码时,它会抛出以下错误:

Error: relation "data_analytics.tbl_summary_wingmans_rt" does not exist

在几篇文章中,我看到可能使用了双引号,但我已经使用了以下内容,我仍然没有得到积极的结果

"data_analytics."tbl_summary_wingmans_rt""
""data_analytics"."tbl_summary_wingmans_rt""
'data_analytics."tbl_summary_wingmans_rt"'

Tags: 代码fromimportdatabufferpasswordsummaryconn
2条回答

在psycopg2.9中copy_from的行为发生了变化,正确地引用了表名,这意味着您不能再以这种方式提供模式限定的表名;您必须改用copy_expert

在将其发送到Postgres解析器之前,必须将模式和表分开, 当您发送"data_analytics.tbl_summary_wingmans_rt"时,它是单个字符串,无法解析

使用'"data_analytics"."tbl_summary_wingmans_rt"'这将把输出解析为“schema”。“table”和PostgreSQL将能够解析

相关问题 更多 >