2016-07-18 24 views
1

在我的桌子上敲打我的頭。python cx_Oracle遊標不會返回有效查詢的行

我的cx_Oracle遊標沒有返回有效查詢的行,我找不到原因。

相同的連接返回同一模式中其他表的預期結果...例如,如果我只是簡單地將查詢中的引用表名從TABLE_A更改爲TABLE_B,它就可以正常工作。

該查詢在SQL Developer/SQL Plus中使用相同的用戶/連接字符串正常工作。在調試過程中,我從cursor.statement複製/粘貼以驗證完全相同的語句,沒有拼寫錯誤。

我已經減少了查詢到最簡單的形式;

1. select * from SCHEMA.TABLE_A 

2. select * from SCHEMA.TABLE_B 

查詢1返回使用cx_Oracle作爲使用cx_Oracle

預期時執行,但是在sqlplus/SQL開發人員返回預期的行等

查詢2名的作品沒有行

我已經驗證了權限 - 但是顯然這是因爲我正在使用(和驗證)用戶/連接在cx_Oracle中與在SQL工具中相同。

的代碼無法減少/簡化了,我不認爲隔離問題 - 但我可能是盲目的東西真的很明顯:

import cx_Oracle 

db_conn=cx_Oracle.connect('user/[email protected]:1521/TEST_PDB') 
cur = db_conn.cursor() 
qry = 'select * from SCHEMA_NAME.TABLE_A' 
cur.execute(qry) 

{cx_Oracle.Cursor上{cx_Oracle ■連接到用戶@本地:1521/TEST_PDB}}

cur.fetchall() 

[]

cur.rowcount 

然而,其他表/查詢工作:

qry = 'select * from SCHEMA_NAME.TABLE_B' 
cur.execute(qry) 
cur.fetchall() 

[(12320573611891L,'23 .5.2126981' ,0, 'NEW' ,'UPDATE',datetime.datetime(2016,5,24,9,0),48,0,None,None)]

這是我遇到過這個問題的唯一表 - 我知道迄今爲止。

我使用的是Oracle 12c中,蟒蛇2.7.11 64位,而ojdbc6.jar,和64位InstantClient

任何想法? 發現任何我的眼睛或大腦只是看不到明顯的東西嗎?

+0

表的實際名稱是什麼? * Table_A *可能是[Oracle保留字](https://docs.oracle.com/cd/B19306_01/em.102/b40103/app_oracle_reserved_words.htm)? – Parfait

回答

0

我想出了我對這個問題無視的地方。

記錄不是COMMITED。 我能夠使用同一個用戶在我插入他們的會話(SQL Developer)中查詢記錄。

這導致「這是怎麼回事」 我應該知道/更好。

+0

通過接受您自己的答案,您可以幫助減少未接受答案的問題列表,甚至可以幫助您減少問題列表。請閱讀https://meta.stackexchange.com/questions/16930/is-it-ok-to-answer-your-own-question-and-accept-it瞭解更多關於回答自己問題的信息。 – toonice