从 python 运行 sql 脚本时如何仅抑制 SQL*Plus 横幅消息

Posted

技术标签:

【中文标题】从 python 运行 sql 脚本时如何仅抑制 SQL*Plus 横幅消息【英文标题】:How to only suppress SQL*Plus banner messages when running sql script from python 【发布时间】:2021-09-24 17:20:51 【问题描述】:

我已经从 Python 执行 Oracle SQL 脚本很长时间了,但从未找到一种方法来仅抑制 SQL*Plus 的横幅以及连接和断开连接消息。

SQL*Plus 本身使用如下代码调用:

session = subprocess.Popen(
    args=['sqlplus', '-S', '-L', username+'/'+password+'@'+server), "@".format(script)],
    stdin=subprocess.PIPE,
    stdout=sys.stdout,
    stderr=subprocess.STDOUT,
    )

try:
    session.communicate(timeout=timeout)
except subprocess.TimeoutExpired:
    session.kill()
    session.communicate()
    
code = session.returncode

我知道 SQLPlus 有 -S 静默选项,这会抑制横幅,但是当使用静默选项时,SQLPlus 也会抑制(即使在假脱机文件中)回显命令。

是否有人找到了一种方法来抑制 SQL*Plus 横幅以及连接和断开消息?

【问题讨论】:

【参考方案1】:

这似乎是 SQL*Plus 中的一个错误:Bug 17328625

【讨论】:

以上是关于从 python 运行 sql 脚本时如何仅抑制 SQL*Plus 横幅消息的主要内容,如果未能解决你的问题,请参考以下文章

如何仅在代码第一次运行时在 python 中运行函数?

使用 WPF WebBrowser 控件时如何抑制脚本错误?

调用 Set-ExecutionPolicy 时如何抑制来自脚本的警告消息

从 SQLPlus 运行 SQL 脚本失败时如何查看错误?

如何使用 pl sql 过程从结构仅在运行时知道的 oracle 表中动态获取数据?

[在SQL Server中运行Python脚本时接受EULA错误