我已经发现了Oracle的SQLCL,并且能够让它在终端上工作。我还能够让它在Python中工作,直到输入实际的SQL查询。
我的Python代码如下所示:
import subprocess
import time
import os
os.chdir("C:/sqlcl/bin")
subprocess.run(["sql", "username/password@//database-oracle.datamore.com/moreprod.more:1521"])此时,我得到"SQL>“提示符,显示Oracle已准备好接受我的查询。我想要做的是输入脚本的位置并执行它,如下所示:
@C:/Users/username/queries/test-query.sql;基本上,我需要一种通过Python将SQL语句或脚本位置传递给SQL提示符的方法。
发布于 2020-11-18 09:32:14
下面是如何将项传递给子流程
args = ["grep", "beans"]
child_proccess = subprocess.Popen(args, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
child_process_output = child_proccess.communicate(b"I love beans \n I like cars")[0]
print(child_process_output)发布于 2020-11-20 02:01:08
以下是有效的方法:
import subprocess
import os
os.chdir("C:/sqlcl/bin")
subprocess.run(["sql",
"username/password@//database-oracle.datamore.com/moreprod.more:1521",
"@",
"C:/sqlcl/bin/test-query.sql",
";"])请注意,该查询与SQLCLapplication位于同一目录中
发布于 2021-03-27 17:42:23
import pexpect
from os import environ
import sys
environ['TNS_ADMIN'] = wallet
sqlcl_bin = '/sqlcl_source/sqlcl/bin/sql /nolog' # path to sqlcl bin
child = pexpect.spawn (sqlcl_bin)
child.logfile = sys.stdout.buffer
child.expect('SQL>', timeout=30)
user=
password=
service=
conn_string = f"conn {user}/{password}@{service};"
child.sendline(conn_str)这就是我连接的方式
https://stackoverflow.com/questions/64885544
复制相似问题