Ubuntu下Python通過SQLAlchemy庫訪問Oracle資料庫

來源:互聯網
上載者:User

Ubuntu下Python通過SQLAlchemy庫訪問Oracle資料庫

SQLAlchemy並不是資料庫驅動,Python訪問Oracle資料的驅動是cx_Oracle,但是這個驅動依賴於Oracle instant client。所以python如果想通過SQLAlchemy庫訪問Oracle資料庫,那麼需要先安裝Oracle instant client、再安裝cx_Oracle、最後安裝SQLAlchemy。
搞了一圈下來,發現這個過程比較繁瑣,現在的資料有些老舊,寫篇文檔和大家分享下。

安裝Oracle instant client去Oracle官網下載安裝包

http://www.oracle.com/technet...
我看的時候已經是版本 12.1.0.2.0 ,同一個版本下有很多包,支援cx_Oracle需要下載下面兩個包
oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm
簡稱basic、devel包
basic包含有所有的oracle client lib/bin 檔案
devel包含了oracle client 外部介面的標頭檔

安裝

Oracle官方只提供了RPM包,我的作業系統是Ubuntu,需要安裝一個alien進行轉換。
sudo install alien 就可以完成安裝

用alien 將 RPM包轉換成DEB包,

 
   sudo alien -i oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm    sudo alien -i oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm 

然後安裝deb包

 
   sudo dpkg -i oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.deb   sudo dpkg -i oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.deb

basic包安裝成功後,在/usr/lib/oracle/12.1/client64/目錄拷貝了lib、bin庫,devel包安裝後會/usr/lib/oracle/12.1/client64/目錄下拷貝include標頭檔。
但是,我在用alien轉devel RPM包時失敗了,後來我就把RPM包解壓,發現devel RPM包裡面就是一些include檔案,把這些檔案拷貝到/usr/lib/oracle/12.1/client64/include目錄,也能正常工作。

 
安裝包的作用是在指定目錄下存放bin、lib、include標頭檔這些東西,如果安裝不了,可以自己解壓執行。
設定環境變數

設定環境變數的目的是為了讓其它程式能找到安裝的Oracle庫

 
   $ export ORACLE_HOME=/usr/lib/oracle/11.2/client64    $ export LD_LIBRARY_PATH=$ORACLE_HOME/lib
連結oracle庫到系統目錄

在 /etc/ld.so.conf.d 目錄下建立 oracle.conf檔案,在檔案裡面指定oracle庫的路徑/usr/lib/oracle/11.2/client64/lib
執行連結配置

 
   $ sudo ldconfig
安裝cx_Oracle

安裝libaio包,libaio是Linux下的一個非同步非阻塞介面,它提供了以非同步非阻塞方式來讀寫檔案的方式,讀寫效率比較高,oracle SQLPlus庫依賴它。

 
   sudo apt-get install libaio1

所有準備工作完成後,執行包安裝命令就可以成功安裝cx_Oracle了

 
   sudo apt-get install cx_Oracle

如果前期的準備工作沒做好,會報各種安裝失敗,大家可以對照安裝步驟,比對前面的操作是否正確。

安裝sqlalchemy

最後使用 sudo apt-get install sqlalchemy 就可以完成安裝了

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.