python cx_Oracle游标不返回有效查询的行

时间:2016-07-18 16:34:49

标签: python sql cursor cx-oracle fetchall

在这张桌子上把头撞到我的桌子上。

我的cx_Oracle游标没有为有效查询返回任何行,我无法弄清楚原因。

同一连接返回同一模式中其他表的预期结果...例如,如果我只是将查询中引用的表名从TABLE_A更改为TABLE_B,则它可以正常工作。

使用相同的用户/连接字符串,SQL Developer / SQL Plus中的查询工作正常。我在调试期间从cursor.statement复制/粘贴以验证完全相同的语句,没有拼写错误。

我已将查询缩减为最简单的形式;

<body>
  <third-party-angular-app>
    <third-party-component>
      <my-angular-app>
      </my-angular-app>
    </third-party-component>
  </third-party-angular-app>
</body>

1. select * from SCHEMA.TABLE_A

使用cx_Oracle执行时,查询1不返回任何行,但是在SQLPlus / SQL Developer等中返回预期的行。

查询2使用cx_Oracle

按预期工作

我已经验证了权限 - 但这显然有效,因为我正在使用(并验证)cx_Oracle中的用户/连接与SQL工具中的相同。

代码无法再减少/简化我不认为可以解决问题 - 但我可能对一些非常明显的事情视而不见:

2. select * from SCHEMA.TABLE_B
  

{cx_Oracle.Cursor on {cx_Oracle.Connection to user @ localhost:1521 / TEST_PDB}}

import cx_Oracle

db_conn=cx_Oracle.connect('user/password@localhost:1521/TEST_PDB')
cur = db_conn.cursor()
qry = 'select * from SCHEMA_NAME.TABLE_A'
cur.execute(qry)
  

[]

cur.fetchall()
  

0

然而,其他表/查询有效:

cur.rowcount
  

[(12320573611891L,&#39; 23.5.2126981&#39;,0,&#39; NEW&#39;,&#39; UPDATE&#39;,datetime.datetime(2016,5,24,9, 0),48,0,无,无)]

这是我遇到此问题的唯一表格 - 我目前所知道的。

我使用的是Oracle 12c,python 2.7.11 64位,以及ojdbc6.jar和64位InstantClient

有什么想法吗? 发现我的眼睛或大脑没有看到明显的东西?

1 个答案:

答案 0 :(得分:0)

我想出了我对这个问题视而不见的地方。

记录未通过。 我能够使用相同的用户查询我插入它们的会话中的记录(SQL Developer)。

导致&#34;发生了什么&#34; 我应该知道/更好。