南京正厚軟件技術(shù)培訓學校

7x24小時咨詢熱線

400-660-3310

當前位置 : 好學校 南京正厚軟件技術(shù)培訓學校 學習資訊 資訊詳情

Python3.6連接Oracle 10G圖解指南

2021-09-08

Python3.6連接Oracle 10G圖解指南

Python3.6連接Oracle 10G圖解指南

Python連接Oracle相對mysql等其它數(shù)據(jù)庫會麻煩一些,需要增加Oracle_client libraries這層連接。

如下圖:

Python3.6連接Oracle 10G圖解指南二

其中容易出現(xiàn)問題是Python解析器、cx_oracle擴展模塊、Oracle client三者使用的版本一致性。比如:是win64位程序,這點很重要。

官網(wǎng)圖解

Python3.6連接Oracle 10G圖解指南三

1、Python解析器版本:

dos命令行執(zhí)行Python,得知3.6 win AMD64位版本

1、Python解析器版本:

2、Cx_oracle

Cx_oracle是Python訪問Oracle的擴展模塊module,在程序中需要import的模塊。安裝方法:

1、自動安裝:

pip install cx-oracle

1、自動安裝:

cx_Oracle 8.2新版,支持Python3.6到3.9版本。

2、手工安裝:

(1)從pypi下載包:

https://pypi.org/project/cx-Oracle/#files

手工安裝:

(2)Dos下執(zhí)行:

pip install cx_Oracle-8.2.1-cp36-cp36m-win_amd64.whl

(2)Dos下執(zhí)行:

數(shù)據(jù)庫連接、增刪改查等。

3、Oracle Client

Oracle Client Libraries是Oracle client的精簡版,如果本機安裝了和cx_oracle版本匹配的Oracle客戶端,可以直接使用。

有關(guān)認證配置,請參閱Oracle Support的Doc ID 207303.1。

總之,Oracle Client Libraries:

21可以連接到Oracle Database 12.1或更高版本。

19、18和12.2可以連接到Oracle Database 11.2或更高版本。

12.1可以連接到Oracle Database 10.2或更高版本。

11.2可以連接到Oracle Database 9.2或更高版本。

client中重要3個文件:

oci.dll(重要文件)

oraocci12.dll(不同版本12數(shù)字會不同)

oraociei12.dll(不同版本12數(shù)字會不同)。

client libraries也稱之為instant client

3、Oracle Client

注意,如果使用12.1,需要vc++ 2010,其它版本也有對應的vc要求。

3、Oracle Client
3、Oracle Client三

使用 Oracle 客戶端庫

方式1:在程序中指定client目錄

程序中指定解壓后client libraries的位置和tnsnames.ora文件目錄

#################  連接方法1:直接指定tnsnames位置 #######################
cx_Oracle.init_oracle_client(lib_dir=r"D:\devools\oracle\instantclient_12_1")
## client 12.1 使用tnsnames文件別名鏈接
db = cx_Oracle.connect('scott/scott@orcl')

config_dir 可以不指定,默認查找  lib_dir下面的 \network\adminnsnames.ora

方式2: 使用win環(huán)境變量

配置Oracle client目錄到path環(huán)境變量

方式2: 使用win環(huán)境變量

經(jīng)過上述步驟,Python連接Oracle環(huán)境配置就OK了,需要注意工程的Python解析器必須和上述配置的解析器是同一個,PyCharm Community2020版本會在當前工程自動創(chuàng)建Python環(huán)境。

方式2: 使用win環(huán)境變量

4、Oracle Database

驗證版本信息:select * from v$version

4、Oracle Database

常見錯誤

DPI-1047版本不一致

錯誤cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library

原因:python,cx_oracle和oracle客戶端的位數(shù)不一致。

解決方案:使用1中提到的一致版本。

ORA-12154: TNS

cx_Oracle.DatabaseError: ORA-12154: TNS: 無法解析指定的連接標識符

ORA-12154: TNS

原因1:

連接串參數(shù)錯誤

解決方案:

cx_oracle7和8下使用連接有差異:

## cx_oracle8.2 使用tnsnames文件別名鏈接(對應 instant client 12.1 )

db = cx_Oracle.connect('scott/scott@orcl')

# cx_oracle7 使用下面的連接寫法 (對應 instant client 11.2)

# db = cx_Oracle.connect('scott/scott@192.168.159.100:1521/orcl')

print("oracle版本:", db.version)

原因2:目錄無讀寫權(quán)限,

如程序中指定的lib_dir無權(quán)限

cx_Oracle.init_oracle_client(lib_dir=r"D:\devools\oracle\instantclient_12_1")

解決方案:修改權(quán)限,文件夾-屬性-安全,修改權(quán)限

連接串參數(shù)錯誤
收藏
分享到:

相關(guān)課程

相關(guān)資訊

南京正厚軟件技術(shù)培訓學校

南京正厚軟件技術(shù)培訓學校

認證等級

信譽良好,可安心報讀

南京正厚軟件技術(shù)培訓學校

已獲好學校V2信譽等級認證

信譽值

  • (60-80)基礎信譽積累,可放心報讀
  • (81-90)良好信譽積累,可持續(xù)信賴
  • (91-100)充分信譽積累,推薦報讀

與好學校簽訂讀書保障協(xié)議:

  • 100%
  • 65
  • 12365
在線咨詢
;