cx_Oracle 有多个 SQL 请求?

Multiple SQL request on cx_Oracle?

我使用 cx_Oracle Oracle 数据库的 Python 接口。

在同一个查询中,我必须:

  1. 将会话更改为 CDB 容器
  2. 执行 SQL 请求

这是我的代码:

Query = f"""ALTER SESSION SET CONTAINER=cdb$root;
                    select RESOURCE_NAME as "Parametre", 
                           MAX_UTILIZATION as "Valeur courrante", 
                           LIMIT_VALUE as "Valeur limite",
                           decode( nvl( MAX_UTILIZATION, 0),0, 0,  ceil ( ( MAX_UTILIZATION / LIMIT_VALUE) * 100) ) as "Pourcentage utilise"
                from v$resource_limit 
                where RESOURCE_NAME in ('sessions','processes')
                  and decode( nvl( MAX_UTILIZATION, 0),0, 0,  ceil ( ( MAX_UTILIZATION / LIMIT_VALUE) * 100) ) > {seuil_max_occupation_param}"""
            SQL_Query = pd.read_sql_query(Query,conn)

但此代码出现 Oracle 错误:

ORA-00922: option erronee ou absente

例如,这组请求在 SQLPlus 上运行良好。 我有语法问题,但哪一个? 非常感谢。 最好的祝福。 西奥

所有 Oracle API 一次执行一个 语句 。来自 documentation:

cx_Oracle can be used to execute individual statements, one at a time. It does not read SQL*Plus “.sql” files.

您需要多次调用 execute(),首先传递 ALTER,然后传递 SELECT。您需要为这两个呼叫使用相同的连接。 或者,您可以将 SQL 调用包装在 PL/SQL 块中(以及 return 和 REF CURSOR or Implicit Result Set)。