通過使用cx oracle報錯帶來的知識點學習

2021-10-06 10:26:14 字數 1280 閱讀 2778

一、問題描述:

python下使用cx_oracle模組查詢oracle資料庫的資料,**如下,遇到的問題是在執行第二段**時,始終沒有資料,但實際上查詢的結果集是有資料的。

sql_hotslab_count = "select count(ef_temp) from (select ef_temp, systime from user.table1 t where 1=1 " \

" and t.systime >= to_date(:1,'yyyy/mm/dd hh24:mi:ss') " \

" and t.systime < to_date(:2,'yyyy/mm/dd hh24:mi:ss')) cc " \

" where cc.ef_temp >= 400 "

sql_totalslab_count = "select count(ef_temp) from (select ef_temp, systime from user1.table1 t where 1=1 " \

" and t.systime >= to_date(:1,'yyyy/mm/dd hh24:mi:ss') " \

" and t.systime < to_date(:2,'yyyy/mm/dd hh24:mi:ss')) "

hotslab_count = cursor.execute(sql_hotslab_count, [runday + '00:00:00', runday + '08:00:00'])

totalslab_count = cursor.execute(sql_totalslab_count, [runday + '00:00:00', runday + '08:00:00'])

hotslab_count_result = hotslab_count.fetchall()[0][0]

totalslab_count_result = totalslab_count.fetchall()

二、分析過程:

1、fetchall換成fetchmany(),fetchone()都沒有起作用

2、sql語句中的大小寫、別名、查詢方法都換過,無效

3、在某次排除錯誤過程中,發現hotslab_count_result的值並不是意料中的第乙個查詢語句的值,而是第二個查詢語句的值,然後突然意識到自己對游標的理解還不清楚,推測游標在執行過程中,只能執行一條語句。

三、知識阻塞點:

關於oracle資料庫游標的使用

四、解決方案:

1、一次游標,只執行一條語句

2、想要執行多條語句,就需要將執行結果儲存後,在執行游標

使用 cx oracle連線oracle

1 各種軟體 oracle11g 服務端,客戶端 如果沒有簡易的install包也可以,cx oracle,還有python,注意版本一定要對應,2 安裝 安裝oracle服務端,客戶端 python 如果是windows,將客戶端bin目錄中的ocx.dll copy到python跟目錄 將x o...

cx Oracle使用方法二

技術手冊 cx oracle使用方法 正確安裝好cx oracle之後,要使用它來連線到oracle資料庫進行操作,具體應該分3步走 import cx oracle 匯入模組 db cx oracle.connect hr hrpwd localhost 1521 xe 建立連線,3 個引數分開寫...

cx Oracle使用方法一

正確安裝好cx oracle之後,要使用它來連線到oracle資料庫進行操作,具體應該分3步走 import cx oracle 匯入模組 db cx oracle.connect hr hrpwd localhost 1521 xe 建立連線,3 個引數分開寫 db1 cx oracle.conn...