2012-08-03 54 views
6

是否可以使用sqlobject從鐵蟒連接到mysql數據庫?如果是這樣,怎麼樣?我必須安裝什麼?如何在鐵蟒上安裝和使用sqlobject + mysql?

我已經爲cpython安裝了sqlobject,它工作正常,但是如果我在ironpython中使用相同的包,我會得到「ImportError:No module named _mysql」。我明白這意味着Ironpython無法加載訪問mysql API所需的基於C的.dll。什麼是解決方法,還是有一個?

+0

如果你看看這個[鏈接](http://www.ironpython.info/index。 PHP/Databases_with_Odbc)它顯示瞭如何使用Odbc連接,但安裝我不知道你是否已經安裝,但這是我能找到的唯一修復(只使用MySQL) – 2012-11-26 16:52:58

回答

-1

如果你看到這一點,很可能你在安裝MySQLdb時做了一些錯誤;重新閱讀(或閱讀)自述文件。 _mysql是與MySQL客戶端庫連接的低級C模塊。

以前有不同版本的MySQLdb在「奇怪」的平臺上有構建問題;在這種情況下,「怪異」意味着「不是Linux」,儘管通常在Unix/POSIX平臺上沒有問題,包括BSD和Mac OS X. Windows的問題更多,部分原因是Windows安裝中沒有可用的mysql_config的MySQL。 1.2.1解決了大多數(如果不是全部的話)這些問題,但是您仍然需要編輯一個配置文件,以便安裝程序知道在哪裏可以找到MySQL以及包含哪些庫。

ImportError: libmysqlclient_r.so.14: cannot open shared object file: No such file or directory 

後。所以數量可能會有所不同,但是這意味着你有MySQLdb的一個版本的MySQL對一個版本的編譯,並且正試圖運行它針對不同的版本。共享庫版本在主要版本之間往往會發生變化。

解決方案:重建MySQLdb,或獲取匹配的MySQL版本。

可能導致此問題的另一件事:MySQL庫可能不在您的系統路徑中。

解決方案:

set the LD_LIBRARY_PATH environment variable so that it includes the path to the MySQL libraries. 

set static=True in site.cfg for static linking 

reconfigure your system so that the MySQL libraries are on the default loader path. In Linux, you edit /etc/ld.so.conf and run ldconfig. For Solaris, see Linker and Libraries Guide. 

ImportError: ld.so.1: python: fatal: libmtmalloc.so.1: DF_1_NOOPEN tagged object may not be dlopen()'ed 

這是從Solaris中一個奇怪的一個。這是什麼意思?我不知道。但是,如果Python和MySQL之間存在某種編譯器或環境不匹配的情況,就會發生這種情況。例如,在某些商業系統上,您可能會使用自己的編譯器編譯一些代碼,並使用GCC編譯其他代碼。它們並不總是齧合在一起。遇到這種情況的一種方法是從不同供應商處獲取二進制包。

解決方案:從源代碼重建Python或MySQL(或者兩者)。

ImportError: dlopen(./_mysql.so, 2): Symbol not found: _sprintf$LDBLStub Referenced from: ./_mysql.so Expected in: dynamic lookup 

這是一個從Mac OS X.這似乎是一個編譯器不匹配,但是兩個不同版本的GCC之間的這段時間。看起來GCC的幾乎每個主要版本都會因爲某些原因而改變ABI,所以例如,將編譯了GCC-3.3和GCC-4.0的代碼鏈接起來可能會有問題。

+0

-1:這個問題具體是關於諷刺的 - 我在標題和第一句中提到它。你的回答沒有任何辦法來解決嘗試使用這個模塊的獨特情況,這個模塊是用鐵python – 2012-12-30 02:26:37

1

尋找在源代碼的SQLObject是純Python,代碼依賴於MySQLdb的被限制爲CPython的。

不過,如果您修改要使用的是用純蟒蛇mysql.connector(http://dev.mysql.com/doc/connector-python/en/index.html)庫中的代碼,你應該能夠estanblish連接到mysql

注意:mysql.connector不跟隨相同的API MySQLdb的,將需要大量的改寫爲source code

我相信這可能是你最好的解決方法