有什么方法可以使用 Python 的 cx_Oracle、SQL 客户端来使用 SPOOL SQLPLUS 命令?

Any way to use SPOOL SQLPLUS command using cx_Oracle, SQL client of Python?

我正在尝试使用 cx_Oracle 执行 SQL 脚本,大致看起来像

SPOOL /tmp/test.log SET echo ON SET serveroutput ON SIZE UNLIMITED BEGIN #SOME_PL/SQL_STATEMENTS END; / SPOOL OFF

我在哪里尝试将 PL/SQL 语句的结果写入文件。我了解到 SQLPlus 命令在 cx_Oracle 中不受支持。有什么方法可以使用 SPOOL 使用 cx_Oracle?

cx_Oracle.

中没有直接使用 SPOOL 的方法

问题是 SPOOLSQL*PLUS 特定命令。它不是 Oracle SQL 命令。因此,实际的假脱机是在客户端处理的。当你做类似

的事情时
SPOOL ON
SET PAGESIZE 0
SET SERVEROUTPUT ON
COLUMN username FORMAT A20

所有命令都是 SQL*PLUS 命令,一个本地(客户端)命令,它们不会被发送到 Oracle 服务器,也不会改变行为完全没有 Oracle 会话。

这些命令仅用于操纵 Oracle 服务器的输出在屏幕上的显示方式(或在 SPOOL 的情况下写入文件或打印机)。

您可以通过不必以分号结尾 ;(在大多数情况下)来识别本地命令。

可在此处找到 SQL*PLUS 命令的完整参考:https://docs.oracle.com/database/121/SQPUG/ch_twelve001.htm#SQPUG023