当前位置: 首页 > 知识库问答 >
问题:

从Java MySQLdb导入中调用Python脚本

爱唯
2023-03-14

我正在从我的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个答案

连时铭
2023-03-14

所以,我发现问题出在我在Java运行python程序时传递的论点上。

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

我最终决定在Python代码中使用MySQL Python连接器而不是MySQLdB。它像魅力一样工作,问题得到了解决!

 类似资料:
  • 我试图从java代码调用python脚本。

  • 我有以下目录结构: b、 py需要在a.py中导入一个类。因此,我可以在导入a之前将以下行添加到b.py。 sys.path.append(os.path.dirname(sys.argv[0])) 这是可行的,我可以从任何目录调用b.py,它也可以导入a。但是,当我在另一个目录中编写脚本以使用execfile()调用此文件时,这将失败。 我尝试了相对导入,但得到了“在非包错误中尝试相对导入” 我

  • 问题内容: 我正在尝试从python这样启动PowerShell脚本: 问题是我得到以下错误: 无法加载文件C:\ Users \ sztomi \ workspace \ myproject \ buildxml.ps1,因为在此系统上禁用了脚本的执行。请参阅“获取有关about_signing的帮助”以了解更多详细信息。 尽管事实上我很早以前确实通过键入管理员运行的PS终端来启用Powersh

  • 问题内容: 我有要从Python脚本调用的Perl脚本。我一直在寻找,并没有成功。我基本上是试图调用向Perl脚本发送1变量的方法,但是不需要Perl脚本的输出,因为它是一个自包含程序。 到目前为止,我想出的是: 只有刚刚开始的Python编程,所以我确定以上内容完全是胡说八道。任何帮助将非常感激。 问题答案: 如果您只想打开通往perl解释器的管道,那么您的方向正确。我认为您唯一缺少的是perl

  • 问题内容: 在网站上运行Selenium测试时,我有一些Flash元素无法使用Selenium / Python进行测试。我想调用一个单独的终端窗口,运行Sikuli OCR测试,然后再返回Selenium / Python测试。我还不能完全弄清楚这一点。我将XXX放在我不知道新终端打开并运行Sikuli脚本的参数的位置。 我敢肯定,这里有几处错误。任何帮助将不胜感激。我已经搜索并阅读了可以在此找

  • 问题内容: 我希望使用exiftool扫描照片和视频中的EXIF标签。这是一个perl可执行文件。推论这一点的最佳方法是什么?是否已有Python库可以执行此操作?还是应该直接调用可执行文件并解析输出?(后者似乎很脏。)谢谢。 我问的原因是因为我当前正在使用pyexiv2,该视频不支持视频。Perl的exiftool对图像和视频有非常广泛的支持,我想使用它。 问题答案: 为避免为每个图像启动新进程