Psycopg2 关系数据库不存在

Psycopg2 relation db does not exist

我最近开始使用 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"'

你现在必须先将模式和 table 分开,然后再将其发送到 Postgres 解析器, 当您发送 "data_analytics.tbl_summary_wingmans_rt" 它是单个字符串且无法解析时

使用 '"data_analytics"."tbl_summary_wingmans_rt"' 这会将输出解析为“模式”。table”并且 PostgreSQL 将能够解析

copy_from 的行为在 psycopg2 2.9 中更改为正确引用 table 名称,这意味着您不能再以这种方式提供模式限定的 table 名称;您必须改用 copy_expert