2017-05-04 39 views
0
使用Python

我试图连接蟒蛇BigSQL.I有一个Java代码,可以连接蟒蛇BigSQL &检索BigSQL.Below数据是我的示例代码连接BigSQL通过Java

public class Hello { 

    public static void main(String[] args) { 
    try(Connection con = DriverManager.getConnection("connection details")) { 

Class.forName("com.ibm.db2.jcc.DB2Driver"); 
    Statement stmt = con.createStatement(); 
    System.out.println("Connected to BigSQL");  
    ResultSet result = stmt.executeQuery("select * from table limit 10"); 
    while (result.next()) { 
     //Retrieve by com_name 
     String com_name = result.getString(1); 
     //Retrieve by family 
     String family = result.getString(2); 
     //Retrieve by sci_name 
     String sci_name = result.getString(3); 
     //Retrieve by symbol 
     String symbol = result.getString(4); 
     //Retrieve by synonym 
     String synonym = result.getString(5); 
    System.out.println(com_name+":"+family+":"+sci_name+":"+symbol+":"+synonym); 
    } 

    } catch (SQLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (ClassNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    } 

} 

我写的一个Python代码中使用我的Python

import os 
import os.path,subprocess 
from subprocess import STDOUT,PIPE 
path='Location where my .java file is' 
os.chdir(path) 
def compile_java(java_file): 
    subprocess.check_call(['javac', java_file]) 


def execute_java(java_file): 
    java_class,ext = os.path.splitext(java_file) 
    cmd = ['java', java_class] 

compile_java('Hello.java')  
execute_java("Hello") 

我的Python代码成功运行调用这个Java代码,但我无法检索

提到的java的输出

你能帮我吗?

由于提前

+0

你为什么从蟒蛇执行Java代码?你可以使用Jython或bash吗? –

+0

实际上,根据我的项目要求,我只能使用python –

+0

'execute_java'什么也不做......你应该在那里添加subprocess.check_call。 –

回答

0

您需要执行调用java和使用check_output获取Java输出。 check_call刚刚返回的返回码:

def execute_java(java_file): 
    java_class,ext = os.path.splitext(java_file) 
    cmd = ['java', java_class] 
    print(cmd) 
    javaStdout =subprocess.check_output(['java', java_class]) 
    print ('>>', javaStdout) 

execute_java("HelloWorld") 

的回报:

['java', 'HelloWorld'] 
>> b'Hello World!\n' 
+0

谢谢@Maurice Meyer使用check_output,我得到输出>> b''为最上面的帖子中提到的java代码但是我期待10行输出格式为com_name +“:”+ family +“:”+ sci_name +“ : “+符号+”:“+代名词。任何想法为什么发生?当我用java命令使用命令提示符运行java代码时,我用com_name +“:”+ family +“:”+ sci_name +“:”+ symbol +“:”+同义词格式获得了10行输出 –

+0

我正在使用:'System.out.println(“Hello World!”);'并从控制台运行它。你可以尝试shell = True并打印出[docs]中定义的stderr(https://docs.python.org/2/library/subprocess.html?highlight=check_output#subprocess.check_output) –

+0

Thanks @Maurice Meyer。它有帮助 –