[英]run sql script using SQLCL in python
我發現了 Oracle 的 SQLCL 並且能夠使其在終端中工作。 通過輸入實際的 SQL 查詢,我還能夠使其在 Python 中工作。
我在 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 提示符的方法。
這是將項目傳遞給子流程的方法
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)
這是有效的:
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",
";"])
請注意,該查詢與 SQLCL 應用程序在同一目錄中
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)
這就是我的連接方式
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.