J'utilise Jython 2.2.1 et MySQL Connector/J 5.1 pour accéder à une base de données MySQL. Je voudrais utiliser la méthode cursor.tables() de zxJDBC pour récupérer une liste de tables dans cette base de données. Toutefois, cette méthode renvoie toujours Aucun. Selon la documentation de zxJDBC, cursor.tables() est identique à Java DatabaseMetaData.getTables(). Lorsque j'appelle cette méthode Java de Jython, cela fonctionne comme prévu, mais l'utilisation du paquet zxJDBC ne fonctionne pas pour moi. Voici ce que j'ai essayé:Jython zxJDBC cursor.tables() renvoie toujours Aucun
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();
}
}
}
Lorsque j'appelle ceci à partir de Jython, tout va bien.
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',))
La base de données de test contient deux tables appelées 'table_a' et 'table_b'. La sortie est:
Java:
table_a
table_b
Python:
None
J'ai essayé ceci sur Linux et MacOS avec le même résultat. Avant d'essayer de comprendre ce qui ne va pas avec zxJDBC, je voulais savoir s'il y avait quelque chose de mal dans la façon dont j'utilise ce paquet.
Merci.