摘要:并不是數(shù)據(jù)庫驅(qū)動,訪問數(shù)據(jù)的驅(qū)動是,但是這個驅(qū)動依賴于。所以如果想通過庫訪問數(shù)據(jù)庫,那么需要先安裝再安裝最后安裝。安裝包的作用是在指定目錄下存放頭文件這些東西,如果安裝不了,可以自己解壓執(zhí)行。
sqlalchemy并不是數(shù)據(jù)庫驅(qū)動,python訪問oracle數(shù)據(jù)的驅(qū)動是cx_Oracle,但是這個驅(qū)動依賴于Oracle instant client。所以python如果想通過sqlalchemy庫訪問oracle數(shù)據(jù)庫,那么需要先安裝Oracle instant client、再安裝cx_Oracle、最后安裝sqlalchemy。
搞了一圈下來,發(fā)現(xiàn)這個過程比較繁瑣,現(xiàn)在的資料有些老舊,寫篇文檔和大家分享下。
http://www.oracle.com/technet...
我看的時候已經(jīng)是版本 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包,我的操作系統(tǒng)是ubuntu,需要安裝一個alien進(jìn)行轉(zhuǎn)換。
sudo install alien 就可以完成安裝
用alien 將 RPM包轉(zhuǎn)換成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轉(zhuǎn)devel RPM包時失敗了,后來我就把RPM包解壓,發(fā)現(xiàn)devel RPM包里面就是一些include文件,把這些文件拷貝到/usr/lib/oracle/12.1/client64/include目錄,也能正常工作。
安裝包的作用是在指定目錄下存放bin、lib、include頭文件這些東西,如果安裝不了,可以自己解壓執(zhí)行。設(shè)置環(huán)境變量
設(shè)置環(huán)境變量的目的是為了讓其它程序能找到安裝的Oracle庫
$ export ORACLE_HOME=/usr/lib/oracle/11.2/client64 $ export LD_LIBRARY_PATH=$ORACLE_HOME/lib鏈接oracle庫到系統(tǒng)目錄
在 /etc/ld.so.conf.d 目錄下創(chuàng)建 oracle.conf文件,在文件里面指定oracle庫的路徑/usr/lib/oracle/11.2/client64/lib
執(zhí)行鏈接配置
$ sudo ldconfig安裝cx_Oracle
安裝libaio包,libaio是Linux下的一個異步非阻塞接口,它提供了以異步非阻塞方式來讀寫文件的方式,讀寫效率比較高,oracle SQLPlus庫依賴它。
sudo apt-get install libaio1
所有準(zhǔn)備工作完成后,執(zhí)行包安裝命令就可以成功安裝cx_Oracle了
sudo apt-get install cx_Oracle
如果前期的準(zhǔn)備工作沒做好,會報(bào)各種安裝失敗,大家可以對照安裝步驟,比對前面的操作是否正確。
安裝sqlalchemy最后使用 sudo apt-get install sqlalchemy 就可以完成安裝了
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/38046.html
摘要:我們需要注意的是只有在數(shù)據(jù)庫服務(wù)器端與客戶端的編碼一致的情況下我們才能正常的顯示非編碼而在中默認(rèn)會將查詢的字符串強(qiáng)制將其轉(zhuǎn)換為。而正常的情況應(yīng)該指定其編碼為中國而設(shè)定就是相當(dāng)于修改上述的編碼為。 近期在項(xiàng)目中,要對1張100多萬條記錄的表進(jìn)行查詢,然后進(jìn)行一些數(shù)據(jù)的統(tǒng)計(jì),但是在這個過程中,發(fā)現(xiàn)只查詢出來幾條數(shù)據(jù)就出現(xiàn)了UnicodeDecodeError了。 在這里,我們使用sqla...
摘要:一般印象,項(xiàng)目適合做一些短小精悍的項(xiàng)目,特別是與等數(shù)據(jù)庫結(jié)合很是般配。生成報(bào)表,不同的查詢結(jié)果生成不同的報(bào)表。配置從下載客戶端,然后解壓后放入自己指定的目錄。指定數(shù)據(jù)庫連接池的超時時間。 一般印象,flask 項(xiàng)目適合做一些短小精悍的項(xiàng)目,特別是與 sqlite、mysql 等數(shù)據(jù)庫結(jié)合很是般配。但是在一些大公司,特別是一些金融行業(yè)等國企公司,還是以 oracle 居多,那么,這個小辣...
閱讀 3192·2021-11-23 10:09
閱讀 2057·2021-10-26 09:51
閱讀 975·2021-10-09 09:44
閱讀 3898·2021-10-08 10:04
閱讀 2742·2021-09-22 15:14
閱讀 3619·2021-09-22 15:02
閱讀 1035·2021-08-24 10:03
閱讀 1719·2019-12-27 12:14