首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python中使用SQLCL运行sql脚本

在python中使用SQLCL运行sql脚本
EN

Stack Overflow用户
提问于 2020-11-18 09:02:34
回答 3查看 490关注 0票数 0

我已经发现了Oracle的SQLCL,并且能够让它在终端上工作。我还能够让它在Python中工作,直到输入实际的SQL查询。

我的Python代码如下所示:

代码语言:javascript
复制
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已准备好接受我的查询。我想要做的是输入脚本的位置并执行它,如下所示:

代码语言:javascript
复制
@C:/Users/username/queries/test-query.sql;

基本上,我需要一种通过Python将SQL语句或脚本位置传递给SQL提示符的方法。

EN

回答 3

Stack Overflow用户

发布于 2020-11-18 09:32:14

下面是如何将项传递给子流程

代码语言:javascript
复制
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)
票数 0
EN

Stack Overflow用户

发布于 2020-11-20 02:01:08

以下是有效的方法:

代码语言:javascript
复制
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位于同一目录中

票数 0
EN

Stack Overflow用户

发布于 2021-03-27 17:42:23

代码语言:javascript
复制
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)

这就是我连接的方式

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64885544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档