gpt4 book ai didi

python - 使用 JPype - 如何访问 JDBC 元数据函数

转载 作者:行者123 更新时间:2023-11-28 22:51:57 24 4
gpt4 key购买 nike

我正在使用 JayDeBeAPI它使用 JPype 加载 FileMaker 的 JDBC 驱动程序并提取数据。

但我还希望能够获取数据库中所有表的列表

JDBC documentation (第 55 页)它列出了以下功能:

The JDBC client driver supports the following Meta Data functions:

getColumns

getColumnPrivileges

getMetaData

getTypeInfo

getTables

getTableTypes

关于如何从 JPype 或 JayDeBeAPI 中调用它们有什么想法吗?

如果有帮助,这是我当前的代码:

import jaydebeapi
import jpype

jar = r'/opt/drivers/fmjdbc.jar'
args='-Djava.class.path=%s' % jar
jvm_path = jpype.getDefaultJVMPath()
jpype.startJVM(jvm_path, args)

conn = jaydebeapi.connect('com.filemaker.jdbc.Driver',
SETTINGS['SOURCE_URL'], SETTINGS['SOURCE_UID'], SETTINGS['SOURCE_PW'])
curs = conn.cursor()

#Sample Query:
curs.execute("select * from table")
result_rows = curs.fetchall()

更新:

这是一些进展,看起来应该可行,但我收到以下错误。有什么想法吗?

> conn.jconn.metadata.getTables()
*** RuntimeError: No matching overloads found. at src/native/common/jp_method.cpp:121

最佳答案

好的,感谢 eltabo 和 Juan Mellado,我想通了!

我只需要传递正确的参数来匹配方法签名。

这是工作代码:

import jaydebeapi
import jpype

jar = r'/opt/drivers/fmjdbc.jar'
args='-Djava.class.path=%s' % jar
jvm_path = jpype.getDefaultJVMPath()
jpype.startJVM(jvm_path, args)

conn = jaydebeapi.connect('com.filemaker.jdbc.Driver',
SETTINGS['SOURCE_URL'], SETTINGS['SOURCE_UID'], SETTINGS['SOURCE_PW'])
results = source_conn.jconn.getMetaData().getTables(None, None, "%", None)

#I'm not sure if this is how to read the result set, but jaydebeapi's cursor object
# has a lot of logic for getting information out of a result set, so let's harness
# that.
table_reader_cursor = source_conn.cursor()
table_reader_cursor._rs = results
read_results = table_reader_cursor.fetchall()
#get just the table names
[row[2] for row in read_results if row[3]=='TABLE']

关于python - 使用 JPype - 如何访问 JDBC 元数据函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21027904/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com