python cx_Oracle 游标 returns 没有有效查询的行
python cx_Oracle cursor returns no rows for valid query
这个把我的头撞在桌子上。
我的 cx_Oracle 游标 return 没有有效查询的行,我不知道为什么。
相同连接 returns 预期结果来自相同架构中的其他 tables...例如,如果我只是将查询中引用的 table 名称更改为 TABLE_A 到 TABLE_B 它工作正常。
查询在 SQL Developer/SQL Plus 中使用相同的 user/connection 字符串工作正常。我在调试期间从 cursor.statement copied/pasted 验证完全相同的语句,没有拼写错误。
我已将查询简化为尽可能简单的形式;
1. select * from SCHEMA.TABLE_A
和
2. select * from SCHEMA.TABLE_B
查询 1 returns 使用 cx_Oracle 执行时没有行,但 return 在 SQLPlus/SQL 开发人员等
中预期行
查询 2 使用 cx_Oracle
按预期工作
我已经验证了权限 - 但这显然有效,因为我正在使用(并验证)user/connection 在 cx_Oracle 中与在 SQL 工具中相同。
代码不能再 reduced/simplified 我不认为要隔离问题 - 但我可能对一些非常明显的事情视而不见:
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
然而,另一个 table/query 有效:
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 )]
这是迄今为止我所知道的唯一 table 个问题。
我正在使用 Oracle 12c、python 2.7.11 64 位、ojdbc6.jar 和 64 位 InstantClient
有什么想法吗?
发现我的眼睛或大脑看不到明显的东西吗?
我发现了我对这个问题视而不见的地方。
记录未提交。
我能够使用相同的用户在插入记录的会话中查询记录(SQL 开发人员)。
这导致了 "what the heck is going on"
我应该知道/更好。
这个把我的头撞在桌子上。
我的 cx_Oracle 游标 return 没有有效查询的行,我不知道为什么。
相同连接 returns 预期结果来自相同架构中的其他 tables...例如,如果我只是将查询中引用的 table 名称更改为 TABLE_A 到 TABLE_B 它工作正常。
查询在 SQL Developer/SQL Plus 中使用相同的 user/connection 字符串工作正常。我在调试期间从 cursor.statement copied/pasted 验证完全相同的语句,没有拼写错误。
我已将查询简化为尽可能简单的形式;
1. select * from SCHEMA.TABLE_A
和
2. select * from SCHEMA.TABLE_B
查询 1 returns 使用 cx_Oracle 执行时没有行,但 return 在 SQLPlus/SQL 开发人员等
中预期行查询 2 使用 cx_Oracle
按预期工作我已经验证了权限 - 但这显然有效,因为我正在使用(并验证)user/connection 在 cx_Oracle 中与在 SQL 工具中相同。
代码不能再 reduced/simplified 我不认为要隔离问题 - 但我可能对一些非常明显的事情视而不见:
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
然而,另一个 table/query 有效:
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 )]
这是迄今为止我所知道的唯一 table 个问题。
我正在使用 Oracle 12c、python 2.7.11 64 位、ojdbc6.jar 和 64 位 InstantClient
有什么想法吗? 发现我的眼睛或大脑看不到明显的东西吗?
我发现了我对这个问题视而不见的地方。
记录未提交。 我能够使用相同的用户在插入记录的会话中查询记录(SQL 开发人员)。
这导致了 "what the heck is going on" 我应该知道/更好。