2015-06-06 94 views
1

如何在python 64bit中使用32位MS訪問驅動程序進行odbc連接? 可以通過改變pypyodbc中的環境句柄或odbc常量來完成,或者創建一個位轉換文件嗎?
另一個想法(不知道如果可能的話):有沒有辦法在代碼執行期間切換到32位python.exe(只適用於用戶想要訪問數據庫時)?本質上類似...可能的64位Python與32位MS訪問驅動程序連接?

if access api called and struct.calcsize("P") == 8: open python 32bit interpreter and connect to 32bit driver

開放給所有的解決方案...謝謝

回答

3

文章,論壇和SO Posts比比皆是關於這一主題。

簡而言之,無法將(在應用程序級別)64位Python.exe連接到32位MS Access ODBC驅動程序(odbcad32.exe),因爲數據在類型之間存儲和處理方式不同。但是,由於backwards compatibility建議使用最低公分母,因爲64位操作系統可以運行32位應用程序,同一級別的程序可以相互「通話」。

對於切換模式的動態設置,這可能是一個非常廣泛的解決方法,因爲32位python.exe和64位python.exe本質上是獨立安裝的應用程序,包含像pypyodbc這樣的包。所以上面安裝兩個版本,你需要腳本之一:

  1. 離開本身並使用platform or variable length calculation爲您提調用其他版本的一個Python版本:struct.calcsize("p");
  2. 在命令行(例如,shell腳本,批處理文件);
  3. 通過外部程序(例如,Excel/Access VBA,Java,C#,php.exe);

外部應用程序需要根據安裝的ODBC驅動程序,查看註冊表項作爲指示器或變量類型大小,選擇將運行python腳本的版本。這可能還需要爲兩個python.exe版本創建路徑變量,並確保它們不會相互衝突,選擇一個作爲default

許多人選擇根據用戶的CPU環境部署兩個版本的應用程序。

+0

謝謝,我們可以討論如何去做法1嗎?我已經測試了通過32位Python的odbc連接,它的工作原理。現在這個計劃是在執行中期間優雅的切換 – asdf

+0

創建了一個關於1的新問題。http://stackoverflow.com/questions/30716663/switching-from-64bit-python-exe-to-32bit-in-mid-執行 – asdf

相關問題