Jython zxJDBCcursor.tables() 始终返回 None

发布于 2024-07-13 04:35:22 字数 1467 浏览 1 评论 0原文

我正在使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

眼泪淡了忧伤 2024-07-20 04:35:22

在cursor.tables()之后尝试打印cursor.fetchall()

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和jython 2.5 beta进行测试)

我假设:

  • cursor.tables()在中执行查询
    pythoncursor.fetchall
  • () 返回
    结果

Try a print cursor.fetchall() after your 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()

(tested with Informix and jython 2.5 beta)

i assume:

  • cursor.tables() excutes the query in
    python
  • cursor.fetchall() returns the
    results
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文