Я использую временную таблицу для добавления записей из pandas фрейма данных, который затем вставляю в финальную таблицу с запросом ниже
result = connection.execute("INSERT INTO finalTable SELECT * FROM tempTable ON CONFLICT DO NOTHING")
Это даст мне ошибки типа, так как все столбцы теперь имеют строковый тип:
sqlalchemy.ex c .ProgrammingError: (psycopg2.ProgrammingError) столбец "column3" имеет тип integer, но выражение имеет тип text
Даже если столбцы во временной таблице имеют те же типы, что и в финальной таблице. Когда я назначаю типы в запросе выбора, как показано ниже, он работает нормально.
result = connection.execute("INSERT INTO finalTable SELECT column1, TO_DATE(column2, 'YYYY-MM-DD'), CAST(column3 as int) FROM tempTable ON CONFLICT DO NOTHING")
Мне интересно, не существует ли более общего c способа убедиться, что правильные типы сохранены?