在Python中从dual中选择函数(arg)
DB:Oracle 我能够在sql dev和sql plus中执行以下语句:在Python中从dual中选择函数(arg),python,sql,oracle,Python,Sql,Oracle,DB:Oracle 我能够在sql dev和sql plus中执行以下语句: select OUTPUT_DATA(123) from dual; 但当我试图在Python上执行此语句时,Python崩溃了 if database == 'oracle': conn_str = 'Provider=OraOLEDB.Oracle;Data Source=%s;User ID=%s;Password=%s;' % (dbserver, dbUID, dbPWD) #oracle c
select OUTPUT_DATA(123) from dual;
但当我试图在Python上执行此语句时,Python崩溃了
if database == 'oracle':
conn_str = 'Provider=OraOLEDB.Oracle;Data Source=%s;User ID=%s;Password=%s;' % (dbserver, dbUID, dbPWD) #oracle connection string
try:
conn = Dispatch('ADODB.Connection')
conn.Open(conn_str)
conn.Execute(sqlCommand)
conn.Close()
result = True
except Exception as e:
print(e)
raise Exception('Failed to execute SQL with Excpetion: ' + str(e))
下面是python错误的屏幕截图
Traceback (most recent call last):
File "<string>", line 73, in execInThread
File "C:\Program Files (x86)\PyScripter\Lib\rpyc.zip\rpyc\core\netref.py", line 196, in __call__
File "C:\Program Files (x86)\PyScripter\Lib\rpyc.zip\rpyc\core\netref.py", line 71, in syncreq
File "C:\Program Files (x86)\PyScripter\Lib\rpyc.zip\rpyc\core\protocol.py", line 431, in sync_request
File "C:\Program Files (x86)\PyScripter\Lib\rpyc.zip\rpyc\core\protocol.py", line 379, in serve
File "C:\Program Files (x86)\PyScripter\Lib\rpyc.zip\rpyc\core\protocol.py", line 337, in _recv
File "C:\Program Files (x86)\PyScripter\Lib\rpyc.zip\rpyc\core\channel.py", line 50, in recv
File "C:\Program Files (x86)\PyScripter\Lib\rpyc.zip\rpyc\core\stream.py", line 166, in read
EOFError: [Errno 10054] An existing connection was forcibly closed by the remote host
Traceback (most recent call last):
File "C:\Program Files (x86)\PyScripter\Lib\rpyc.zip\rpyc\core\netref.py", line 148, in __getattribute__
File "C:\Program Files (x86)\PyScripter\Lib\rpyc.zip\rpyc\core\netref.py", line 71, in syncreq
File "C:\Program Files (x86)\PyScripter\Lib\rpyc.zip\rpyc\core\protocol.py", line 429, in sync_request
File "C:\Program Files (x86)\PyScripter\Lib\rpyc.zip\rpyc\core\protocol.py", line 229, in _send_request
File "C:\Program Files (x86)\PyScripter\Lib\rpyc.zip\rpyc\core\protocol.py", line 224, in _send
File "C:\Program Files (x86)\PyScripter\Lib\rpyc.zip\rpyc\core\channel.py", line 69, in send
File "C:\Program Files (x86)\PyScripter\Lib\rpyc.zip\rpyc\core\stream.py", line 176, in write
File "C:\Program Files (x86)\PyScripter\Lib\rpyc.zip\rpyc\core\stream.py", line 60, in __getattr__
EOFError: stream has been closed
Traceback (most recent call last):
File "C:\Program Files (x86)\PyScripter\Lib\rpyc.zip\rpyc\core\netref.py", line 196, in __call__
File "C:\Program Files (x86)\PyScripter\Lib\rpyc.zip\rpyc\core\netref.py", line 71, in syncreq
File "C:\Program Files (x86)\PyScripter\Lib\rpyc.zip\rpyc\core\protocol.py", line 429, in sync_request
File "C:\Program Files (x86)\PyScripter\Lib\rpyc.zip\rpyc\core\protocol.py", line 229, in _send_request
File "C:\Program Files (x86)\PyScripter\Lib\rpyc.zip\rpyc\core\protocol.py", line 224, in _send
File "C:\Program Files (x86)\PyScripter\Lib\rpyc.zip\rpyc\core\channel.py", line 69, in send
File "C:\Program Files (x86)\PyScripter\Lib\rpyc.zip\rpyc\core\stream.py", line 176, in write
File "C:\Program Files (x86)\PyScripter\Lib\rpyc.zip\rpyc\core\stream.py", line 60, in __getattr__
EOFError: stream has been closed
回溯(最近一次呼叫最后一次):
execInThread中第73行的文件“”
文件“C:\Program Files(x86)\PyScripter\Lib\rpyc.zip\rpyc\core\netref.py”,第196行,在调用中__
文件“C:\Program Files(x86)\PyScripter\Lib\rpyc.zip\rpyc\core\netref.py”,第71行,在syncreq中
文件“C:\Program Files(x86)\PyScripter\Lib\rpyc.zip\rpyc\core\protocol.py”,第431行,在同步请求中
serve中第379行的文件“C:\Program Files(x86)\PyScripter\Lib\rpyc.zip\rpyc\core\protocol.py”
文件“C:\Program Files(x86)\PyScripter\Lib\rpyc.zip\rpyc\core\protocol.py”,第337行,在_recv中
recv中的文件“C:\Program Files(x86)\PyScripter\Lib\rpyc.zip\rpyc\core\channel.py”,第50行
文件“C:\Program Files(x86)\PyScripter\Lib\rpyc.zip\rpyc\core\stream.py”,第166行,已读
EOFError:[Errno 10054]远程主机已强制关闭现有连接
回溯(最近一次呼叫最后一次):
文件“C:\Program Files(x86)\PyScripter\Lib\rpyc.zip\rpyc\core\netref.py”,第148行,位于__
文件“C:\Program Files(x86)\PyScripter\Lib\rpyc.zip\rpyc\core\netref.py”,第71行,在syncreq中
文件“C:\Program Files(x86)\PyScripter\Lib\rpyc.zip\rpyc\core\protocol.py”,第429行,在同步请求中
文件“C:\Program Files(x86)\PyScripter\Lib\rpyc.zip\rpyc\core\protocol.py”,第229行,在发送请求中
文件“C:\Program Files(x86)\PyScripter\Lib\rpyc.zip\rpyc\core\protocol.py”,第224行,在发送
文件“C:\Program Files(x86)\PyScripter\Lib\rpyc.zip\rpyc\core\channel.py”,第69行,发送
写入文件“C:\Program Files(x86)\PyScripter\Lib\rpyc.zip\rpyc\core\stream.py”,第176行
文件“C:\Program Files(x86)\PyScripter\Lib\rpyc.zip\rpyc\core\stream.py”,第60行,在__
伊奥费罗:溪流已经关闭
回溯(最近一次呼叫最后一次):
文件“C:\Program Files(x86)\PyScripter\Lib\rpyc.zip\rpyc\core\netref.py”,第196行,在调用中__
文件“C:\Program Files(x86)\PyScripter\Lib\rpyc.zip\rpyc\core\netref.py”,第71行,在syncreq中
文件“C:\Program Files(x86)\PyScripter\Lib\rpyc.zip\rpyc\core\protocol.py”,第429行,在同步请求中
文件“C:\Program Files(x86)\PyScripter\Lib\rpyc.zip\rpyc\core\protocol.py”,第229行,在发送请求中
文件“C:\Program Files(x86)\PyScripter\Lib\rpyc.zip\rpyc\core\protocol.py”,第224行,在发送
文件“C:\Program Files(x86)\PyScripter\Lib\rpyc.zip\rpyc\core\channel.py”,第69行,发送
写入文件“C:\Program Files(x86)\PyScripter\Lib\rpyc.zip\rpyc\core\stream.py”,第176行
文件“C:\Program Files(x86)\PyScripter\Lib\rpyc.zip\rpyc\core\stream.py”,第60行,在__
伊奥费罗:溪流已经关闭
有人知道为什么吗?你是如何编写
sqlCommand
?我只是用数据库信息和sql语句调用我的函数:run_sql\u query(“oracle”,dbserver=“XXX”,dbUID=“XXX”,dbPWD=“XXXX”,sqlCommand='select output\u data(123)from dual')如果你注释行conn.Execute(sqlCommand),这段代码会崩溃吗
?如果注释掉conn.Execute(sqlCommand)
,则不会崩溃。执行下面的sql命令会崩溃pythonselect output\u data(123)from dual
Executingselect sysdate from dual
不会出现问题您是如何编写sqlCommand
的?我只是用数据库信息和sql语句调用我的函数:运行sql查询(“oracle”,dbserver=“XXX”,dbUID=“XXX”,dbPWD=“XXXX”,sqlCommand='select output_data(123)from dual')如果注释行conn.Execute(sqlCommand)
,该代码是否会崩溃?如果注释掉conn.Execute(sqlCommand)
,则不会崩溃。执行下面的sql命令会使pythonselect output_data(123)from dual
Executingselect sysdate from dual
正常工作