首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在与cx_Oracle交互时似乎无法工作

问在与cx_Oracle交互时似乎无法工作
EN

Stack Overflow用户
提问于 2022-01-10 09:47:51
回答 1查看 86关注 0票数 0

我有一个使用cx_Oracle从python脚本执行的sql语句。该语句包括两个子查询,如下所示:

代码语言:javascript
复制
select distinct
 us.firstname as "Vorname",
 us.lastname as "Nachname",
 us.email as "Email",
 us.loginname as "Q-Nummer",
 us.status,
 us.lastlogintime
from 
 user_table us
where
 us.lastlogintime >= add_months(trunc(sysdate), -7)
 and us.lastlogintime < add_months(trunc(sysdate), -6)
 and not exists (select distinct sp.user_id from specificstatus sp where sp.user_id = us.id)
 and not exists (select distinct ec.owner_id from electriccomponent ec where ec.owner_id = us.id)

我得到不同数量的结果,这取决于我是在python脚本中运行这个sql语句,还是直接在statement中运行这个sql语句。python脚本似乎没有执行这两个子查询,因为当我在sql developper中注释掉这些查询时,结果与python脚本中的结果相同。这是什么原因?

编辑: python代码没有什么特别之处:

代码语言:javascript
复制
dsn_tns = cx_Oracle.makedsn(cfg.db_hostname, cfg.db_port, sid=cfg.db_servicename)
conn = cx_Oracle.connect(user=cfg.db_username, password=cfg.db_password, dsn=dsn_tns, encoding="UTF-8", nencoding="UTF-8")
conn.autocommit = True
c = conn.cursor()
c.execute(cfg.sql_query)
EN

回答 1

Stack Overflow用户

发布于 2022-01-10 18:33:59

正如注释中提到的,您可能连接到不同的数据库或不同的用户,或者在一个或另一个环境中可能有未提交的数据。您需要验证这一点--通过执行一个查询来获取您刚才在SQLDeveloper脚本中添加的数据(例如)。您还可以在这两种环境中作为初始检查执行这些查询:

代码语言:javascript
复制
select sys_context('userenv', 'service_name') from dual
代码语言:javascript
复制
select sys_context('userenv', 'current_user') from dual

在一个环境中执行的查询很难在另一个环境中“失败”执行--当然,除非有严重的错误!SQL被简单地发送到数据库,而不进行任何操作。

您还可以将DPI_DEBUG_LEVEL环境变量设置为值16,并确保您正在执行的SQL实际上就是您认为正在执行的SQL!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70650441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档