python连接oushudb的时候,需要使用psycopg2这个包,这个包copy_from在连接数据库大批量写入的时候会报表不存在。
我这里版本 psycopg2 == 2.9.10会出现这种问题,以下有两种解决办法:
一、降低psycopg2版本
这个是你使用copy_from方法大批量导入数据经常报的错误,这个错误是版本问题,把你当前的版本退回到psycopg2==2.8.4即可
二、copy_from 改为 copy_expert
代码截取导入部分,初始化连接不赘述
原代码:
def copyFromCSV(self):
"""导入csv """
try:
with open('res.csv') as file:
self.cursor.copy_from(file, 'dbschema.table_extract_res', sep=',')
self.conn.commit()
except psycopg2.DatabaseError as e:
print(e)
finally:
self.cursor.close()
self.conn.close()
def copyFromCSV(self):
"""StringIO 方式"""
data = StringIO('p1,dw,p2,dw')
data.seek(0)
try:
self.cursor.copy_from(data, 'dbschema.table_extract_res', sep=',')
self.conn.commit()
except psycopg2.DatabaseError as e:
print(e)
finally:
self.cursor.close()
self.conn.close()
调整后代码:
def copyFromCSV(self):
"""导入csv """
try:
with open('res.csv') as file:
self.cursor.copy_expert(""" COPY dbschema.table_extract_res(proc,p_owner,"table",t_owner)
FROM STDIN WITH CSV """,file)
self.conn.commit()
except psycopg2.DatabaseError as e:
print(e)
finally:
self.cursor.close()
self.conn.close()
def copyFromCSV(self):
"""StringIO 方式"""
data = StringIO('p1,dw,p2,dw')
data.seek(0)
try:
self.cursor.copy_expert("""COPY dbschema.table_extract_res(proc,p_owner,"table",t_owner)
FROM STDIN WITH DELEMITER ',' NULL ''""",data)
self.conn.commit()
except psycopg2.DatabaseError as e:
print(e)
finally:
self.cursor.close()
self.conn.close()
322

被折叠的 条评论
为什么被折叠?



