注:本文檔適用于Windows7 64位系統(tǒng)寨腔,Python2.7 64位。
一薄扁、安裝cx_Oracle及對應(yīng)的Oracle客戶端
- 安裝cx_Oracle, 這個(gè)是一個(gè)Python的擴(kuò)展包剪返,用來訪問Oracle數(shù)據(jù)庫的。Windows的安裝文件可以到http://cx-oracle.sourceforge.net/這里去下載邓梅。
- 下載Oracle 64位客戶端(Oracle Instant Client)脱盲,這個(gè)是Python擴(kuò)展包所需要的∪沼В可以到http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html去下載钱反,下載后解壓到本地磁盤(例如:D:\PLSQL\instantclient_11_2_64),把路徑加入到環(huán)境變量的path中匣距。同時(shí)在系統(tǒng)環(huán)境變量中添加NLS_LANG面哥,值為SIMPLIFIED CHINESE_CHINA.ZHS16GBK,以便支持中文墨礁。
注:客戶端字符集要與服務(wù)器一致幢竹,才能正確顯示數(shù)據(jù)庫的非Ascii字符,但是語言設(shè)置可以不同恩静,因此NLS_LANG也可以設(shè)為American_American.ZHS16GBK焕毫。字符集查詢見附錄。 - 在D:\PLSQL\instantclient_11_2_64\NETWORK\ADMIN添加tnsnames.oRA文件驶乾。新建一個(gè)叫tnsnames.ora的文件邑飒,內(nèi)容如下:
TESTDB= (DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.2)(PORT=1521)) (CONNECT_DATA= (SERVER=DEDICATED) (SERVICE_NAME=TESTDB) ) ) ORACLR_CONNECTION_DATA= (DESCRIPTION= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)) ) (CONNECT_DATA= (SID=CLRExtProc) (PRESENTATION=RO) ) )
- 編寫測試代碼:
importcx_Oracle db_conn=cx_Oracle.connect(“user/pass@tnsname.world”)
二、安裝plsql developer及其對應(yīng)Oralce客戶端
- 安裝PLSQL Developer级乐,這是一個(gè)Oracle可視化軟件疙咸,用來操作Oracle數(shù)據(jù)庫。
- 下載Oracle 32位客戶端(Oracle Instant Client)风科,目前plsql只支持Oracle 32客戶端撒轮。可以到http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html去下載贼穆。下載后解壓到本地磁盤(例如:D:\PLSQL\instantclient_11_2_32)题山,把路徑加入到環(huán)境變量的path中。
- 配置tnsnames.ora文件故痊,內(nèi)容同(一顶瞳、)中第3項(xiàng)。
- 啟動(dòng)PLSQL,在"工具"->"首選項(xiàng)"->"Oralce"->"連接"中配置"Oracle主目錄名"為'D:\PLSQL\instantclient_11_2_32'和"OCI庫"為'D:\PLSQL\instantclient_11_2\oci.dll'慨菱。
- 在"工具"->"首選項(xiàng)"->"Oracle"->"登錄歷史"中配置"固定用戶"焰络,格式為"用戶名/密碼@數(shù)據(jù)庫名稱",如:"test/test@TESTDB"
三符喝、可能會遇見的bug及解決方法
- 如果只安裝Oracle 32位客戶端(Oracle Instant Client)闪彼,PLSQL可以正常使用,但是cx_Oracle會報(bào)錯(cuò)协饲,內(nèi)容如下:
import cx_Oracle Traceback(most recent call last): File"",line1,in ImportError:DLL load failed:%1不是有效的Win32應(yīng)用程序备蚓。
解決方法:
- 安裝64位的oracle client,上述(一)(二)中描述的即為此方法囱稽。
- 拷貝一個(gè)64位的 oci.dll 到%python_home%\Lib\site-packages 下
四、附錄
- 數(shù)據(jù)庫字符集查詢:select * from nls_database_parameters
- 客戶端字符集查詢:select * from nls_instance_parameters
- 會話字符集:select * from nls_session_parameters* 或 *select * from v$nls_parameters二跋,如無特殊設(shè)置战惊,應(yīng)與nls_instance_parameters一致。