【问题标题】:ORA-00933: SQL command not properly ended with psycopg2ORA-00933: SQL 命令未以 psycopg2 正确结束
【发布时间】:2020-11-13 12:38:22
【问题描述】:

所以我一直试图让这个查询通过 psycopg2 从 python 运行,但它给了我错误 ORA-00933: SQL 命令未正确结束 而如果我尝试在 oracle DB 中运行查询,它会毫无问题地通过。

它所做的只是从一个表中获取计数并将其与另一个表的计数进行比较,然后返回 PASS 或 FAIL。

如果有人能帮助确定可能是什么原因,我将不胜感激。

这是查询:

'WITH QA AS ( SELECT COUNT(*) C FROM QAAUTO.FactInternetSales) 
,DEV AS (SELECT COUNT (*) C FROM qaauto.LoyaltyProgramA) 
SELECT "Records count" AS TEST_NAME 
   ,QA.C AS QA_RECORDS 
   ,DEV.C AS DEV_RECORDS 
   ,CASE WHEN DEV.C > 0 AND DEV.C = QA.C THEN "PASS" ELSE "FAIL" END AS RESULT
FROM QA,DEV ; '

运行它的python代码:

def generate_results(self, driver):
    for tce in self.testCaseExecutors:
        testExecutorId = tce["testcaseexecutorid"]
        script = tce["script"]
        failOutputScript = tce["failoutputscript"]

        result = run_Script(driver, script)
        output = None

        if result == 'PASS':
            stateid = 'PASS'
        elif result == 'FAIL':
            stateid = 'FAIL'
            

        tcResult = (testExecutorId, stateid, output)
        self.testCaseResults.append(tcResult)

 def run_Script(driver, script):
    result = driver.fetchall(script, {})
    return result[0]

在我的例子中 script 包含上面发布的查询

【问题讨论】:

  • 您没有显示实际执行查询的代码。如果您在 psycopg2 的上下文之外提供工作查询,那么没有任何人可以提供帮助
  • 会删除分号,这里:FROM QA,DEV ; ' 有什么好处吗?
  • @Littlefoot facepalm,你是对的。无论出于何种原因,这都是问题的原因。谢谢老哥!

标签: python sql database oracle psycopg2


【解决方案1】:

显然查询末尾的分号导致了错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-09
    • 2010-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多