2009-01-31 5 views
2

MySQL 데이터베이스에 액세스하기 위해 Jython 2.2.1 및 MySQL Connector/J 5.1을 사용하고 있습니다. zxJDBC의 cursor.tables() 메서드를 사용하여 해당 데이터베이스의 테이블 목록을 검색하고 싶습니다. 그러나이 메서드는 항상 없음을 반환합니다.Jython zxJDBC cursor.tables()는 항상 None을 반환합니다.

zxJDBC 설명서에 따르면 cursor.tables()는 Java의 DatabaseMetaData.getTables()와 동일합니다. Jython에서이 Java 메소드를 호출하면 예상대로 작동하지만 zxJDBC 패키지를 사용하면 저에게 적합하지 않습니다. 다음은 내가 시도한 것입니다 :

import java.sql.*; 

public class TableTest { 
    public static void tables(String url) { 
     try { 
      Class.forName("com.mysql.jdbc.Driver"); 
      Connection conn = DriverManager.getConnection(url, "root", null); 
      DatabaseMetaData meta = conn.getMetaData(); 
      ResultSet rs = meta.getTables(null, null, "%", 
              new String[] {"TABLE"}); 
      while (rs.next()) { 
       System.out.println(rs.getString("TABLE_NAME")); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

자이 썬에서 이것을 호출하면 괜찮습니다.

from com.ziclix.python.sql import zxJDBC 
import TableTest 

url = 'jdbc:mysql://localhost/jythontest' 

print 'Java:' 
TableTest.tables(url); 

print 'Python:' 
conn = zxJDBC.connect(url, 'root', None, 'com.mysql.jdbc.Driver') 
cursor = conn.cursor() 
print cursor.tables(None, None, '%', ('TABLE',)) 

내 테스트 데이터베이스에는 'table_a'및 'table_b'라는 두 개의 테이블이 있습니다. 출력은 다음과 같습니다 :

Java: 
table_a 
table_b 
Python: 
None 

나는 이것을 Linux와 MacOS에서 같은 결과로 시도했습니다. zxJDBC의 문제점을 파악하기 전에이 패키지를 사용하는 방식에 문제가 있는지를 알고 싶었습니다.

감사합니다. 당신의 cursor.tables()

from com.ziclix.python.sql import zxJDBC 
import TableTest 

url = 'jdbc:mysql://localhost/jythontest' 

print 'Java:' 
TableTest.tables(url); 

print 'Python:' 
conn = zxJDBC.connect(url, 'root', None, 'com.mysql.jdbc.Driver') 
cursor = conn.cursor() 
print cursor.tables(None, None, '%', ('TABLE',)) 
print cursor.fetchall() 

(Informix의 테스트와 자이 썬 2.5 베타)

답변

2

인쇄 cursor.fetchall을 (시도)는 내가 가정

  • cursor.tables()가 파이썬
  • 에서 쿼리를 실행합니다.
  • cursor.fetchall()은 결과를 반환합니다.
관련 문제