Я использую 64-разрядную версию Python Anaconda v4.4, которая работает под управлением Python v3. У меня MS Access 2016 32-битная версия. Я хотел бы использовать pyodbc, чтобы заставить python общаться с Access. Можно ли использовать 64-битный pyodbc для связи с 32-битной базой данных MS Access 2016?

У меня уже есть несколько приложений на Python, работающих с 64-битной Python Anaconda. Переход на 32-битный питон будет непростой задачей.

5
user3848207 29 Авг 2017 в 03:20

3 ответа

Лучший ответ

Я не эксперт по Python, но просто чтобы прояснить некоторые возможные заблуждения ... Файл базы данных Access не является 32-разрядным или 64-разрядным. И 32-разрядная, и 64-разрядная версия Access используют один и тот же формат файла базы данных.

Вы не нуждаетесь в приложении MS Office Access для подключения или использования файла базы данных Access. Вы можете скачать Access Database Engine, который включает драйверы ODBC. самая последняя версия 2010 года имеет 32-разрядные версии. и 64-битные версии. Вам просто нужно указать правильный драйвер в строке подключения, чтобы использовать 64-битный драйвер. Опять же, это не говорит напрямую о соединениях в Python, но, возможно, вы можете заставить его работать напрямую, используя 64-битные драйверы.

4
C Perkins 30 Авг 2017 в 03:07

Да, вы можете. Просто установите

AccessDatabaseEngine_X64.exe /passive

(которая содержит как драйверы x86, так и x64), и все будет в порядке. Не забудьте опцию /passive, потому что если вы это сделаете, она не будет установлена, если у вас также не установлен MS Office 2010. Вы можете загрузить файл с распространяемого сайта Microsoft Access Database Engine 2010

После установки вы запускаете следующее в своей оболочке python, чтобы проверить, что все в порядке:

import pyodbc
[x for x in pyodbc.drivers() if x.startswith('Microsoft')]

И вы должны получить распечатку как

['Microsoft Access Driver (*.mdb, *.accdb)', 'Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)', 'Microsoft Access dBASE Driver (*.dbf, *.ndx, *.mdx)', 'Microsoft Access Text Driver (*.txt, *.csv)']
4
agcala 16 Янв 2019 в 14:28

К сожалению, вам нужен 32-битный Python для общения с 32-битным MS Access. Однако вы должны иметь возможность установить 32-битную версию Python вместе с 64-битным Python. Предполагая, что вы используете Windows, во время выборочной установки вы можете выбрать путь назначения. Затем используйте virtualenv. Например, если вы устанавливаете в C:\Python36-32:

virtualenv --python=C:\Python36-32\bin\python.exe

Удачи!

4
FlipperPA 29 Авг 2017 в 00:42