Подключите Python и MS-Access без установки нового программного обеспечения - PullRequest
0 голосов
/ 03 июля 2019

Я хочу подключить Python к MS-Access, но не могу установить новое программное обеспечение (программы / драйверы) и у меня нет прав администратора, так как я работаю на корпоративном ПК. Есть ли обходные пути?

Я мог бы получить пакет pyodbc, но так как мой Python 64-битный, а MS-Access 32-битный, я ожидаю, что это источник ошибок. Действительно, нет 64-битных драйверов MS-Access и только SQL-сервер:

import pyodbc
print(pyodbc.drivers.())
>>> ['SQL Server']

В результате получается следующая ошибка:

import pyodbc
conn = pyodbc.connect(r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};' 
                      r'DBQ=path\file.accdb;')

>>> InterfaceError: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source 
    name not found and no default driver specified (0) (SQLDriverConnect)')

Как упоминалось ранее, я не могу установить ни 32-битный Python, ни 64-битные драйверы (по крайней мере, кажется, что я не могу). Я попытался настроить новую среду для установки 32-битного Python в соответствии с этим ответом Майка Мюллера , но это привело к "CondaHTTPError", которую я не смог исправить - ответы здесь у меня не сработало.

Опция подключения pyodbc к 32-битным драйверам? Из ответа свашека , это может сработать

%windir%\SysWOW64\odbcad32.exe

но я не уверен, где и как применять его в Python.

После подключения Python к MS-Access моя конечная цель - извлечь Access-запросы для дублирования таблиц в Python, которые были созданы в Access на основе данных Access. Есть ли совсем другой способ или подход?

Дополнительная информация: я работаю со Spyder и Anaconda 64-bit.

1 Ответ

1 голос
/ 03 июля 2019

64-битные приложения, такие как 64-битный Python , не могут использовать 32-битные драйверы, а 32-битные приложения не могут использовать 64-битные драйверы.Это просто невозможно.

На вашем компьютере установлен Microsoft Office Professional Plus 2013, и драйвер доступа не отображается, когда вы используете pyodbc.drivers() из 64-разрядного Python, поэтому мы можем предположить, что у вас 32-разрядная версия Office.

Таким образом, наиболее простым решением будет использование 32-разрядного Python с 32-разрядным драйвером ACE (Microsoft Access Driver (*.mdb, *.accdb)), установленным Office.

В качестве альтернативы, вы можетепереключитесь с 32-битного Office 2013 на 64-битный Office 2013, и тогда ваш 64-битный Python сможет использовать 64-битный драйвер ACE.

...