Я принял свой собственный ответ, но если у кого-то есть лучший способ загрузки DataFrames в синонимы SQL Server, пожалуйста, опубликуйте его!
Алхимия SQL на SQL Server в настоящее время не поддерживает таблицы синонимов, что означает, что метод DataFrame#to_sql
не может быть вставлен в них, и необходимо использовать другой метод.
Начиная с SQL Alchemy 1.2, диалект Oracle поддерживает Синоним / DBLINK Reflection , но аналогичная функция недоступна для SQL Server, даже в готовящемся выпуске SQL Alchemy 1.4 .
Для тех, кто пытается решить эту проблему по-разному, если ваша ситуация соответствует следующим критериям:
- Ваш целевой синоним уже объявлен в ORM как таблица
- Имена столбцов таблицы соответствуют именам столбцов в DataFrame
- Типы данных столбца таблицы либо соответствуют DataFrame, либо могут быть преобразованы без ошибок
Вы можете выполнить следующую операцию bulk_insert_mappings
, при этом TargetTable
определит вашу цель в модели ORM и df
определит ваш DataFrame:
db.session.bulk_insert_mappings(
TargetTable, df.to_dict('records')
)
В качестве бонуса, это значительно быстрее, чем операция DataFrame#to_sql
!