Jython zxJDBCcursor.tables() 始终返回 None
我正在使用 Jython 2.2.1 和 MySQL Connector/J 5.1 来访问 MySQL 数据库。 我想使用 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();
}
}
}
当我从 Jython 调用它时,一切都很好。
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 的问题之前,我想知道我使用这个包的方式是否有问题。
谢谢。
I am using Jython 2.2.1 and MySQL Connector/J 5.1 to access a MySQL database. I would like to use zxJDBC's cursor.tables() method to retrieve a list of tables in that database. However, this method always returns None.
According to the zxJDBC documentation, cursor.tables() is the same as Java's DatabaseMetaData.getTables(). When I call this Java method from Jython, it works as expected, but using the zxJDBC package doesn't work for me. Here's what I have tried:
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();
}
}
}
When I call this from Jython, it is all fine.
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',))
There are two tables in my test database called 'table_a' and 'table_b'. The output is:
Java:
table_a
table_b
Python:
None
I have tried this on Linux and on MacOS with the same result. Before I try to figure out what's wrong with zxJDBC, I wanted to know whether there is anything wrong in the way I am using this package.
Thank you.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在cursor.tables()之后尝试打印cursor.fetchall()
(使用Informix和jython 2.5 beta进行测试)
我假设:
pythoncursor.fetchall
结果
Try a print cursor.fetchall() after your cursor.tables()
(tested with Informix and jython 2.5 beta)
i assume:
python
results