对于jaydebeapi.connect命令,如何解决“无法将第一个arg强制转换为String?”

问题描述 投票:0回答:1

在Windows Server 2016上,我们试图通过JDBC与Jython脚本进行连接,但我们的jaydebeapi.connect语句给出以下错误:

TypeError:getConnection():第一个参数不能被强制转换为字符串

但是,当我们查看examples of using jaydebeapi时,第一个参数是字符串。

这是我们的Python代码:

jclassname = "com.microsoft.sqlserver.jdbc.SQLServerDriver" 
database = "our_database_name"
db_elem = ";databaseName={}".format(database) if database else ""
host = "###.##.###.###" # ip address
port = "1433"    
user = "user_name"
password = "password"  
url = (jdbc:sqlserver://{host}:{port}{db_elem}"        ";user={user};password={password}".format(host=host, port=port, db_elem=db_elem,  er=user, password=password)    )    
print url
driver_args = [url]
jars = None
libs = None
db = jaydebeapi.connect(jclassname, driver_args, jars=jars, libs=libs)

这是我们运行Python脚本的方式:

C:\jython2.7.0\bin\jython.exe C:\path_to_our_script.py

我们缺少什么?我们如何为jaydebeapi.connect语句解决此字符串强制错误?

java python jython windows-server-2016 jaydebeapi
1个回答
0
投票

来自JayDeBeApi文档-

基本上,您只需导入jaydebeapi Python模块并执行connect方法。这使您可以通过DB-API一致性连接数据库。

connect的第一个参数是Java驱动程序类的名称。第二个参数是带有JDBC连接URL的字符串。第三您可以选择提供一个由用户和密码组成的序列或者包含内部参数的字典作为属性传递给Java DriverManager.getConnection方法。有关详细信息,请参见DriverManager类的Javadoc。

您正在从DriverManager.getConnection方法中收到此错误。

DriverManager的JavaDocs-

public static Connection getConnection(String url, Properties info)

因此,您的jaydebeapi.connect函数调用陷入混乱。您的第二个参数应该是url作为字符串。

以下是JayDeBeApi文档中的示例片段。

>>> import jaydebeapi >>> conn = jaydebeapi.connect("org.hsqldb.jdbcDriver", ... "jdbc:hsqldb:mem:.", ... ["SA", ""], ... "/path/to/hsqldb.jar",)
© www.soinside.com 2019 - 2024. All rights reserved.