我最近开始使用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"'
在psycopg2.9中
copy_from
的行为发生了变化,正确地引用了表名,这意味着您不能再以这种方式提供模式限定的表名;您必须改用copy_expert
在将其发送到Postgres解析器之前,必须将模式和表分开, 当您发送
"data_analytics.tbl_summary_wingmans_rt"
时,它是单个字符串,无法解析使用
'"data_analytics"."tbl_summary_wingmans_rt"'
这将把输出解析为“schema”。“table”和PostgreSQL将能够解析相关问题 更多 >
编程相关推荐