2013-03-07 145 views
2

我從Java代碼中調用Python腳本。這是代碼:從JAVA調用Python腳本MySQLdb導入

 
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代碼。

我知道這不是解決問題的最佳方法。但爲了向客戶展示我需要這件事情。有什麼建議麼 ?

+0

你有什麼錯誤嗎?如果你不打印數據庫連接,你的java程序的輸出是什麼? – Nilesh 2013-03-07 06:05:24

+0

您的python腳本是否從java以外的命令行運行?可能在命令shell中的Python無法找到該庫。看看這個問題:http://stackoverflow.com/questions/135035/python-library-path並從java和獨立打印sys.path – GregHNZ 2013-03-07 08:09:29

回答

0

所以,我發現這個問題與我在Java中傳遞的參數一起運行python程序。

第一個參數是 - python 2.6,但它應該只是python而不是某些版本號,因爲與MySQLdB和python存在兼容性問題。

我終於決定在Python代碼中使用MySQL Python連接器代替MySQLdB。它像魅力一樣工作,問題解決了!