Pandas to_sql возвращает ошибку 'отношение уже существует' при использовании if_exists='append'
Я пытаюсь ежедневно вставлять фрейм данных в таблицу в Redshift. Команда to_sql работает для создания таблицы, но возвращает ошибку, когда я пытаюсь добавить существующую таблицу даже при использовании аргумента if_exists = 'append'.
Версии: pandas: 0.23.4 sqlalchemy: 1.2.15 psycopg2: 2.7.6.1 Python: 3.6.7
Я также использую патч обезьяны для ускорения вставок, описанных здесь: https://github.com/pandas-dev/pandas/issues/8953 но без этого патча вставка занимает слишком много времени (несколько часов).
#monkey patch to_sql for redshift
from pandas.io.sql import SQLTable
def _execute_insert(self, conn, keys, data_iter):
print ("Using monkey-patched _execute_insert")
data = [dict((k, v) for k, v in zip(keys, row)) for row in data_iter]
conn.execute(self.insert_statement().values(data))
SQLTable._execute_insert = _execute_insert
import pandas as pd
myDF.to_sql('my_table', engine, if_exists='append', schema = 'my_schema', index=False, chunksize = 10000)
Это возвращает следующую ошибку:
"ProgrammingError: (psycopg2.ProgrammingError) Связь"my_table"уже существует [SQL: '\nCREATE TABLE my_schema." My_table" (\n\tactual_weight FLOAT(53),...")