Вставка sqlalchemy из select теряет правильные типы для столбцов - PullRequest
0 голосов
/ 28 февраля 2020

Я использую временную таблицу для добавления записей из 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 способа убедиться, что правильные типы сохранены?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...