2016-07-18 11 views
1

Избиение моей головы на столе.python cx_Oracle cursor возвращает строки для действительного запроса

Мой курсор 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, но возвращающие ожидаемые строки в SQLPlus/SQL Developer и т.д.

Запрос 2 работы, как ожидается, используя cx_Oracle

Я проверял привилегии - но это, очевидно, работает, поскольку я использую (и проверял), что пользователь/соединение тот же самый в 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 .Connection пользователю @ lokalny_host: тысяча пятьсот двадцать одна/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 64bit и ojdbc6.jar, и 64-битную InstantClient

Любые идеи? Что-нибудь, где мои глаза или мозг просто не видят очевидного?

+0

Каковы фактические названия таблиц? * Таблица_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