从JAVA调用Python脚本MySQLdb导入

时间:2013-03-07 05:33:48

标签: java python java-ee

我从我的Java代码调用Python脚本。这是代码:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class JavaRunCommand {
    public static void main(String args[]) throws IOException {

        // set up the command and parameter
        String pythonScriptPath = "my-path";
        String[] cmd = new String[2];
        cmd[0] = "python2.6";
        cmd[1] = pythonScriptPath;

        // create runtime to execute external command
        Runtime rt = Runtime.getRuntime();
            Process pr = rt.exec(cmd);

        // retrieve output from python script
        BufferedReader bfr = new BufferedReader(new InputStreamReader(
                pr.getInputStream()));
        String line = "";
        while ((line = bfr.readLine()) != null) {
            // display each output line form python script
            System.out.println(line);
        }
    }

}

python.py 有效吗

import os
from stat import *

c = 5
print c 

python.py 无效

import MySQLdb
import os
from stat import *

c = 5
print c 
# some database code down 

所以,我正处于一个关键阶段,我的创业期限已经到了,我必须向客户端展示我的MVP项目,我正在考虑像这样调用Python脚本。当我打印没有dB连接和MySQLdb库的任何东西时,它工作。但是当我包含它们时,它不会运行python脚本。这里错了。它不是假设运行处理所有输入的过程。我安装了MySQLdb,脚本运行时没有java代码。

我知道这不是解决问题的最佳方法。但为了向客户展示一些东西我需要这件事。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

所以,我发现问题出在我用Java传递的参数来运行python程序。

第一个参数是 - python 2.6,但它应该只是python而不是某个版本号,因为MySQLdB和python存在兼容性问题。

我最终决定在python代码中使用MySQL Python连接器而不是MySQLdB。它的功效就像魅力一样,问题也解决了!