Skip to main content
 首页 » 编程设计

java之从 JAVA MySQLdb 导入调用 Python 脚本

2025年05月04日32lexus

我正在从我的 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 代码的情况下运行。

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

请您参考如下方法:

因此,我发现问题出在我在 Java 中传递以运行 python 程序的参数上。

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

我最终决定在 python 代码中使用 MySQL Python 连接器而不是 MySQLdB。它非常有效,问题得到了解决!