web-dev-qa-db-ja.com

64ビットのpyodbcが32ビットのMSAccessデータベースと通信することは可能ですか?

私は64ビットpython anacondav4.4を実行していますpythonv3。MSAccess201632ビットバージョンを使用しています。pyodbcを使用したいです。 python to talktoAccess。64ビットpyodbcを使用してMSAccess 2016 32ビットデータベースと通信することは可能ですか?

私はすでに64ビットのpython anacondaで実行されているpythonアプリケーションをいくつか持っています。32ビットのpythonにダウングレードするのは面倒です。

6
user3848207

私はpythonの専門家ではありませんが、考えられる誤解を明確にするためです... Accessデータベースファイルは32ビットまたは64ビットではありません。32ビットバージョンと64ビットバージョンの両方ofAccessは同じデータベースファイル形式を使用します。

Accessデータベースファイルに接続または使用するためにMSOffice Accessアプリケーションは必要ありません。 ODBCドライバーを含むAccessデータベースエンジンをダウンロードできます。 最新の2010バージョン には32ビットバージョンと64ビットバージョンの両方があります。指定する必要があるのは64ビットドライバーを使用するための接続文字列内の適切なドライバー。繰り返しますが、これはPythonの接続と直接通信しませんが、64ビットドライバーを使用して直接動作させることができます。

4
C Perkins

残念ながら、32ビットのMS Accessと通信するには、32ビットのPythonが必要です。ただし、32ビットバージョンのPython 64ビットPythonと一緒に。Windowsを使用していると仮定すると、カスタムインストール中に、宛先パスを選択できます。次に、virtualenvを使用します。たとえば、C:\Python36-32にインストールする場合:

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

幸運を!

4
FlipperPA

はい、できます。インストールするだけです

AccessDatabaseEngine_X64.exe /passive

(ドライバーのx86バージョンとx64バージョンの両方が含まれています)そしてあなたは大丈夫でしょう。 /passiveオプションを忘れないでください。そうすると、MS Office2010もインストールされていないとインストールされません。 Microsoft Accessデータベースエンジン2010再頒布可能サイト からファイルをダウンロードできます。

インストール後、python Shellで以下を実行して、すべてが正常であることをテストします。

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