python連接Oracle的方式以及過程中遇到的問題


一、庫連接步驟

1、下載cx_Oracle模塊

下載步驟

工具 pycharm :File--->右鍵setting--->找到Project Interpreter  ----->在此位置搜索下載相應的模塊進行下載即可

 

 

 搜索想要安裝的模塊,選中之后Install   package即可

 

 

 

2、python連接代碼編寫

前提:虛擬機上的window7上32位的Oralce11.2.0版本的數據庫、表Python_Oracle ,以及表中有一些測試數據

 

"""
---------------------------------------
 Author:Zjh
 Date: 2019-09-23 15:51
---------------------------------------
"""
import  cx_Oracle
#連接Oracle數據庫
class Connection():
    def OracleConn(self):
        # xnj = """
        #  (DESCRIPTION =
        # (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.27.4)(PORT = 1521))
        #     (CONNECT_DATA =
        #                 (SERVER = DEDICATED)
        #                 (SERVICE_NAME = orcl)                                      )
        #  )
        # """
        #建立Oracle遠程連接
        # highway=cx_Oracle.connect('api_work','apiwork@1234',xnj)
        highway=cx_Oracle.connect('*****','**apiwork@1234**','192.168.27.4:1521/orcl')
        #獲取cursor光標
        cursor=highway.cursor()
        #數據庫操作
        #1.查詢
        sql='select * from Python_Oracle'
        result=cursor.execute(sql)
        print('type of result',type(result))  #為了觀察數據庫查詢語句執行的結果是什么類型的

        print("Number of rows returned: %d" % cursor.rowcount)   

        for i in result:    #循環遍歷,查詢得到的結果集
            print(i)

        #1.插入操作

        cursor.close()
        highway.close()
    pass
pass

if __name__=='__main__':
    connection = Connection()
    connection.OracleConn()

查詢結果:

 

 

 

二、遇到的問題以及解答

 

問題1、剛剛在進行完上面的安裝cx_Oracle模塊的時候遇到的問題:自己按照上面的步驟進行了Install package,之后引入的時候卻有錯誤提示,說是還沒有相應的模塊,

原因:引入方式正確,但是需要稍微的等待一段時間,等待pycharm真正的完全的安裝完成,pycharm 的下方有相應的正在加載的提示。。。。modules loading 

等待加載或者下載完畢即可消除錯誤提示

問題2、編寫完上述的python代碼之后,嘗試運行,結果報錯

python連接oracle數據庫報錯
"DatabaseError: DPI-1047: 64-bit Oracle Client library cannot be loaded: "
解決方案:
  1)
根據錯誤提示:得知是64位的Oracle Client無法被加載,這里的原因是沒有安裝64位版的Oracle客戶端
下載安裝64位版的Oracle Client 地址連接:https://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html
我下載的版本是:

 

 

 

下載完畢之后,將zip包解壓到D:/下面,形成一個D:\instantclient_11_2     的文件夾,下面是zip包中的內容

  2)配置系統環境變量

    a:NLS_LANG               值:SIMPLIFIED CHINESE_CHINA.ZHS16GBK      為了防止中文亂碼

    b: ORACLE_HOME     值:D:\instantclient_11_2                         ORACLE_HOME下則是ORACLE的命令、連接庫、安裝助手、listener等等一系列的東東,其實配置這個                                變量是為了在path中去%ORACLE_HOME%使用,如果沒有這個變量也可以,

    c: TNS_ADMIN             值:D:\instantclient_11_2   

    d:     path                         值:D:\instantclient_11_2                         為了在哪里都能找到可執行的Oracle客戶端下面的可執行程序

path 圖示

 

 

 最后重啟pycharm,運行代碼即可查詢成功

 

 

 

問題解決

問題三、可能大家理解也有這樣的誤區:為什么解壓了客戶端形成了一個目錄D:\instantclient_11_2  就可以成功訪問連接數據庫

原因,python會從環境變量path中去找客戶端中的一些.dll包,所以需要配置環境變量  path  =.......D:\instantclient_11_2    

因為

 

b: ORACLE_HOME     值:D:\instantclient_11_2   ORACLE_HOME下則是ORACLE的命令、連接庫、安裝助手、listener等等一系列的東東,其實配置這個  


變量是為了在path中去%ORACLE_HOME%使用,如果沒有這個變量也可以,只要在path中配置了安裝的instantclient_11_2的根路徑即可

 

 

第一個環境變量是為了python找到為了連接Oracle所下載的客戶端,

為了python找到為了連接Oracle所下載的客戶端目錄      

 並沒有tnsnames.ora

listener.ora等文件

 

 

 

第二個是為了使得在cmd下的任何位置都可以執行Oracle客戶端下的可執行命令如sqlplus等

有tnsnames.ora
listener.ora等文件

 

 具體的都叫oracle客戶端,但是他們的區別是???????

還有一點需要注意的,當我們第一次安裝了Oracle的客戶端也就是圖二的那種,在plsql dev中的首選項中會選擇一個客戶端的安裝根目錄和其下的一個oci.dll文件,這個和客戶端的環境變量是沒有關系的,
因為這里已經指定了路徑了,也就是

中的第一項可以不配置,配置僅僅是為了能在dos的任何目錄下去執行那些Oracle10g下的可執行命令

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM