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