4

在这个上我的头撞在我的桌子上。

我的 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/password@localhost:1521/TEST_PDB')
cur = db_conn.cursor()
qry = 'select * from SCHEMA_NAME.TABLE_A'
cur.execute(qry)

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

cur.fetchall()

[]

cur.rowcount

0

然而,另一个表/查询工作:

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, 无, 无)]

这是我遇到这个问题的唯一一张桌子——我知道的。

我正在使用 Oracle 12c、python 2.7.11 64 位、ojdbc6.jar 和 64 位 InstantClient

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

4

1 回答 1

2

我发现我对这个问题视而不见。

没有提交记录。我能够使用同一用户查询插入它们的会话中的记录(SQL Developer)。

这导致了“到底发生了什么”我应该知道/更好。

于 2016-07-18T17:31:02.743 回答