在Python中从dual中选择函数(arg)

在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

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 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命令会崩溃python
select output\u data(123)from dual
Executing
select 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命令会使python
select output_data(123)from dual
Executing
select sysdate from dual
正常工作