Windows10 Office2010 (32.bit)インストール時にPythonからAccessのmdbファイルを操作する

PythonからAccessのmdbファイルを操作する場合、Win10の64Bit OSでOffice2010の32bit版をインストールすると、Pythonから操作できなかった。
上記の環境下で64bitドライバを32bitドライバと共存させることで、PythonからAccessを操作できた。

手順

Office2010 32bit版がインストールしてある環境でPythonからAccessを操作を参考に
Microsoft Access データベース エンジン 2010 再頒布可能コンポーネントから64bit用ドライバ AccessDatabaseEngine_X64.exeをダウンロードする
「/passive」をつけてインストールする。(インストーラのチェックを回避するため)
AccessDatabaseEngine_X64.exe  /passive

レジストリエディタ(regedit.exe)を開き、次のエントリを削除します。
 (Office起動時に再設定が走らないようにするため)
 HKEY_LOCAL_MACHINESOFTWAREMicrosoftOffice14.0CommonFilesPathsの『mso.dll』


Windows10上のPythonでAccessのDBを参照するこちらを参考に
pip install pyodbc でインストール
pip install pyodbc

Pythonのインタラクティブモードでドライバのインストール状況を確認
>>> import pyodbc
>>> [x for x in pyodbc.drivers() if x.startswith('Microsoft Access Driver')]
['Microsoft Access Driver (*.mdb, *.accdb)']
>>>

Accessのmdbファイルを作って読んでみます(table1というテーブルが入っています)
import sys
import pyodbc

con_str = 'Driver={{Microsoft Access Driver (*.mdb, *.accdb)}};Dbq={0};'.format(r"C:\PROJECT\python\access\db.mdb")
conn = pyodbc.connect(con_str)
cur = conn.cursor()
sql_create_table = ('select * from table1;')
cur.execute(sql_create_table)
for row in cur.fetchall():
   print(row)

正しく読めました。ドライバー関連でうまく動かなかったので助かりました。
Python 3.7.2 (tags/v3.7.2:9a3ffc0492, Dec 23 2018, 23:09:28) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>> 
============= RESTART: C:\PROJECT\python\access\db_odbc_test.py =============
('123', )
('456', )
('789', )
>>> 

コメント

このブログの人気の投稿

Python OpenCVとWebカメラでバーコードリーダー

OpenCV 画像の足し算

OpenCV3とPython3で形状のある物体の輪郭と方向を認識する(主成分分析:PCA、固有ベクトル)