#python #pandas #ms-access #sqlalchemy #sqlalchemy-access
Вопрос:
Я вставляю данные в базу данных Microsoft Access, используя следующий код:
test_data.to_sql('employee_table', cnxn, index=False, if_exists='append', chunksize=10, method='multi')
Это приводит к ошибке:
AttributeError: 'CompileError' object has no attribute 'orig'
Нет никакой ошибки, если просто использовать следующее, т. е. нет method
опции:
test_data.to_sql('employee_table', cnxn, index=False, if_exists='append', chunksize=10)
Комментарии:
1. Тогда почему бы не использовать код, который не выдает ошибок? Фиксирует ли он данные? В чем здесь проблема? Зачем вам нужен дополнительный параметр?
Ответ №1:
Приведенное вами сообщение об ошибке является последующим исключением, вызванным исходной ошибкой (ранее в трассировке стека).:
ошибка sqlalchemy.exc.CompileError: Диалект «доступ» с текущими настройками версии базы данных не поддерживает многорядные вставки на месте.
method="multi"
Опция .to_sql()
хочет создавать многорядные операторы ВСТАВКИ, часто в форме «конструктора табличных значений», например,
INSERT INTO table1 (col1, col2) VALUES (1, 'foo'), (2, 'bar')
и Access SQL не поддерживает их.
Если простой .to_sql()
(без method=
) слишком медленный для большого кадра данных, рассмотрите альтернативный подход, описанный в вики: