cx oracle dpi 1002,cx_Oracle連接數據庫總結

python中連接oracle數據庫使用第三方庫文件cx_Oracle時遇到了各種問題,網上查找資料調試了幾天才弄好,下面是不斷調試后總結的一些經驗。

1.oracle客戶端(Oracle Instant Client)版本需要和操作系統版本位數相同,同時cx_Oracle官方文檔(http://cx-oracle.readthedocs.io/en/latest/installation.html)上有這樣一段話

Version 12.2 client libraries can connect to Oracle Database 11.2 or greater. Version 12.1 client libraries can connect to Oracle Database 10.2 or greater. Version 11.2 client libraries can connect to Oracle Database 9.2 or greater.

根據安裝的Oracle數據庫版本選擇Oracle客戶端(下載地址 http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html),我安裝的oracle數據庫是11g版本,這里的客戶端庫在下載客戶端Oracle Instant Client時就包含在內

下載好oracle客戶端后,在客戶端目錄下新建一/network/admin目錄,并在該目錄下新建tnsnames.ora文件,增加自己的數據庫別名配置。

示例如下:

1 MyDB=

2 (DESCRIPTION =

3 (ADDRESS = (PROTOCOL = TCP)(HOST= IP)(PORT = 1521))4 (CONNECT_DATA =

5 (SERVER =DEDICATED)6 (SERVICE_NAME =)7 )8 )

注意格式要排列好

MyDB為Database名,Host為IP地址, SERVICE_NAME為數據庫服務器的實例名。

2.安裝的python版本位數也需與操作系統版本位數相同

3.安裝的第三方庫cx_Oracle需要版本位數和操作系統相同同時,與Oracle數據庫對應的版本也應相同,因我安裝的數據庫是11g,所以下載的是cx_Oracle-5.3-11g.win-amd64-py3.5-2 若安裝的數據庫是12c則應下載相應版本cx_Oracle(地址 https://pypi.python.org/pypi/cx_Oracle/5.3)

同時可能出現的其他問題在cx_Oracle官方文檔中也寫出了

1. DPI-1047: Oracle Client library cannot be loaded

Check that Python, cx_Oracle and your Oracle Client libraries are all 64-bit or all 32-bit. The DPI-1047 message will tell you whether the 64-bit or 32-bit Oracle Client is needed for your Python.

檢查python,cx_Oracle和Oracle Instant Client版本是否一致,DPI-1047 message會告訴你安裝的客戶端版本是否正確。

2.On Windows, restart your command prompt and use set PATH to check the environment variable has the correct Oracle Client listed before any other Oracle directories.

記得配置Oracle客戶端的環境變量,例如我的配置是 PATH: E:\oracle\instantclient_12_2;

3.On Windows, use the DIR command on the directory set in PATH. Verify that OCI.DLL exists there.

檢查oracle客戶端(instantclient)目錄下存在oci.dll文件

4.On Windows, check that the correct Windows Redistributables have been installed.

oracle客戶端libraries需要正確的Visual Studio版本,具體可見(https://oracle.github.io/odpi/doc/installation.html#windows)中windows目錄下

On Linux, check the LD_LIBRARY_PATH environment variable contains the Oracle Client library directory.

On macOS, make sure Oracle Instant Client is in ~/lib or /usr/local/lib and that you are not using the bundled Python (use Homebrew or Python.org instead).

最后一切就緒,程序未出錯,但并無輸出時感覺內心有些崩潰

1 importcx_Oracle2

3 connection = cx_Oracle.Connection("[email?protected]:Port/SERVICE_NAME")4 cursor =connection.cursor()5

6 try:7   cursor.execute("select 1 / 0 from dual")8 exceptcx_Oracle.DatabaseError as exc:9   error, =exc.args10 print("Oracle-Error-Code:", error.code)11 print("Oracle-Error-Message:", error.message)

最后查看意識到是執行了sql語句,但并未進行輸出

cursor.execute("select 1 / 0 from dual")

下一行增加

print(cursor.description)

便可以看見查找到的數據庫中的內容

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/528898.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/528898.shtml
英文地址,請注明出處:http://en.pswp.cn/news/528898.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

虛擬機python建站_搭建本地虛擬服務器linux(CentOS 7)的python虛擬環境(Hyper-V演示)...

新建虛擬機->安裝CentOS7->新建虛擬交換機:內部網絡->CentOS7設置->網絡適配器:虛擬交換機:新建虛擬交換機->進入CentOS#cd /etc/sysconfig/network-scripts/#ls -a#vi ifcfg-eth0 #(有些系統不是eth0,前面ifcfg-的…

matlab 輸入日期,matlab輸入年月日算一年中的第幾天.doc

matlab輸入年月日算一年中的第幾天clc,clear all,close alldisp This program calculates the day of year given the ;disp current date. ;month input Enter current month 1-12 : ;day input Enter current day 1-31 : ;year input Enter current year yyyy : ;%Check for …

深拷貝的缺點_拷貝?還傻傻分不清深淺?

「引言」?臣聞求木之長者,必固其根本;欲流之遠者,必浚其泉源。---- 魏征 《諫太宗十思疏》?或許你會問到,網上已經把深淺拷貝(算一個面試的高頻考點了吧)的文章都快寫爛了,為什么自己還要重新操刀寫一遍呢&#xff0…

php 失去 焦點 另一個表單獵取值,同一表單如何根據某一個文本框的值 改變另一個文本框的值...

我用的是失去焦點,然后后臺查詢到了數據,返回回來顯示不了!!$(document).ready(function(){$("#card").blur(function(){var card$("#card").val();if(card!""){$.get("{:U(guoye/yanzheng)}&…

實現文件中名詞的統計計數_通過勤哲EXCEL和Excel中的rank函數實現排名統計

如今,信息化已成為各行業企業轉型和發展的關鍵所在,信息化技術最明顯的特點是企業不同部門的人在信息技術的支撐下,可以利用豐富的資源與工具展開協作學習,在相對自由的模式和環境下,改變傳統設計相對局限、固定思維的…

php 選擇 出現列表,php – 如何從加權列表中選擇4個唯一項?

所以我有一個加權項目列表,我想從這個列表中選擇4個非重復項目.Item WeightApple 5Banana 7Cherry 12...Orange 8Pineapple 50最有效的方法是什么?我最初的嘗試是,如果一個已經被選中的項目出現的話,只需重新選擇隨后的選秀權……但是對于一個小名單,這可能會導致大…

安徽關節式焊接機器人_上下料機器人的重要性體現在哪里?它有哪些優勢?

上下料機器人是工業機器人家族中從事加工應用的重要成員之一,能滿足“快速、大批量加工節拍”、“節省人力成本”、“提高生產效率”等要求,成為越來越多中心企業的理想選擇。那么,上下料機器人有哪些特征和優勢?企業主應該如何選…

oracle查詢ora03114,求教:ora-03114錯誤從哪里排查?

ERP軟件偶爾會報 ora-03114錯誤 未連接到oracle我檢查數據庫的根超時有關的設置dba_profiles中的如下兩個參數,都是不限制connect_timeunlimitedidle_timeunlimitedsqlnet.net中,只設置了如下參數SQLNET.EXPIRE_TIME5 --這個用來清除僵死連接的監聽日志文…

python大學什么專業學校_好學校的差專業和一般大學的好專業,該怎么選?我來說真話……...

假如是985,那么只能調劑專業,那么好點211能選到不錯的專業。那該怎么選擇?其實不單單是985/211的問題,是所有考生的任何一個分數都面臨這個問題。比如清華北大被調劑,是去復交金融,還是去清華北大調劑去學環…

oracle查詢表nextval,Oracle Database 建立與查詢 Sequence

相關的 Oracle Database Sequence 資訊如下:建立 Sequence 語法create sequence ._sincrement by 1start with 1maxvalue 99999999999999999999minvalue 1nocycle;其中 :incerment: 每次增加的數值start : Sequence 開始數值maxvalue : Sequence 最大值nocycle …

vision軟件_Roboguide軟件:高速拾取仿真工作站相機與工具添加與配置

上一期為大家介紹了機器人高速拾取仿真工作站中工件、視覺校準板、輸送帶等外圍設備的添加與配置,本期再來為大家介紹一下相機、機器人工具的添加與配置。一、相機添加與配置1.左側瀏覽樹中右擊“Sensor Units”,在彈出的快捷菜單中依次點擊“Add Sensor…

oracle00333,Oracle數據庫REDO損壞ora-00333修復手札

1.事情起因接到電話,周日意外斷電,數據庫起不了,報REDO CRASH,ora-00333錯誤。相關環境如下:RAC oracle_11.2.0.3,無備份,開歸檔。2 處理一到現場,既然對方沒有備份,那就做一個冷備份…

oracle cannot allocate new log,Thread 1 cannot allocate new log

今天發現alter.log有以下信息:Thread 1 cannot allocate new log, sequence 6166Private strand flush not complete對于這個錯誤信息得解釋如下:當系統要重新利用某個日志文件的時候,系統需要將該日志文件所包括的buffer cache 中的dirty bl…

arduino tft 方向_ESP32在Arduino環境下玩轉 LVGL,ESP32移植LVGL詳細教程

微信關注 “DLGG創客DIY”設為“星標”,重磅干貨,第一時間送達。?轉載自慕容流年 https://me.csdn.net/qq_41868901?1. LVGL簡介LittlevGL是一個免費的開源圖形庫,提供了創建嵌入式GUI所需的一切,具有易于使用的圖形元素、漂亮的…

linux內核開文件系統,內核必須懂(二): Linux文件系統初探

目錄前言文件系統結構新建文件和inode文件創建過程inode解析打開文件參考最后前言這次來說文件系統. 文件系統是非常重要的, 提高磁盤使用率, 減小磁盤磨損等等都是文件系統要解決的問題. 市面上的文件系統也是數不勝數, 比較常用的像ext4, xfs以及ntfs等等, 國內的像鵝廠的tfs…

gps衛星位置計算程序matlab_科研項目 | BD/ GPS衛星導航仿真測試系統研究

一、項目背景在移動互聯和互聯網的時代,衛星導航定位已經成為生活中不可或缺的部分。目前,我國的交通、銀行、電力、采礦、測繪等部門以及大眾化市場都需要大量的定位、授時服務。許多企業也形成了覆蓋衛星導航相關材料及元器件、衛星導航芯片、衛星導航…

linux docker權限,linux - 如何解決ubuntu中的docker權限問題? - Ubuntu問答

問題描述我已經按照here的說明安裝了docker。我使用Ubuntu Trusty 14.04 (LTS) (64-bit)。安裝過程中的一切都很好。另外,命令$ sudo docker run -i -t ubuntu /bin/bash可以很好地完成(在打開的控制臺中鍵入”exit”之后。但是當我嘗試執行其他操作時,我…

python虛擬人臉生成_GitHub - 597111463/seeprettyface-generator-yellow: 這是一個用StyleGAN訓練出的黃種人人臉生成器...

黃種人人臉生成器注明:之前做的一些有意思的人臉生成器,現在全部開源分享出來。它的主要作用是可生成制作各類型的人臉素材,供我們任意使用且無須擔心人臉版權的問題。在定制人臉上,開源的全系列生成器包括:黃種人臉生…

Linux輸入密碼接口,Linux下搭建接口自動化測試平臺

前言我們今天來學習一下在Linux下如何搭建基于HttpRunner開發的接口自動化測試平臺吧!需要在Linux上提前準備的環境(下面是本人搭建時的環境):1,Python 3.6.8 (可參考隨筆:Linux學習6-安裝Python3.6)2,MySQL 5.7(可參考…

python構建字典實現英文大寫字母與ascii編碼的轉換_Python:將復雜的字符串字典從Unicode轉換為ASCII...

作為從JSON API調用解析的多級字典,我有很多輸入.字符串都是unicode,這意味著有很多ustuff like this.我正在使用jq來處理結果,需要將這些結果轉換為ASCII.我知道我可以編寫一個函數來像這樣轉換它:def convert(input):if isinstance(input, dict):ret {}for stuff in input:r…