我不熟悉在编写代码时使用linux实例。我正在使用CentOS,正在编写一个依赖于连接SQL数据库的python脚本。我编写的连接到的函数如下所示:
import jaydebeapi
import pandas as pd
import json
from query import p1
def get_conn(conn_name, conf_file = 'data.json' ):
conf_dict = json.load(open(conf_file, 'r'))
c = conf_dict[conn_name.lower()]
return (jaydebeapi.connect(jclassname=c['driver_name'], url=c['jdbc_url'],
driver_args=[c['user'], c['passwd']])
)
conn_scd = get_conn('ora_pdmsn')
scd_df = pd.read_sql(p1, conn_scd)
conn_scd.close()
print(scd_df)
这将导致以下错误:
TypeError: Class com.microsoft.sqlserver.jdbc.SqlServerDriver is not found
我试图找到在centOS中安装此驱动程序的正确方法,但似乎没有任何效果。有什么建议吗?下面是my JSON.data的示例:
{"mssql":
{ "conn_name":"ora_pdmsn", "driver_name":"com.microsoft.sqlserver.jdbc.SQLServerDriver",
"jdbc_url":"internal_url",
"user":"name", "passwd":"pass",
"test_sql":"select CURRENT_TIMESTAMP as ts"
}
}
jaydebeapi需要访问包含您想要使用的JDBC驱动程序的相关JAR(Java归档)文件。因此,您需要确保JDBC驱动程序位于Java类路径上,以便jaydebeapi可以在运行程序时使用它
当然,这也意味着您需要安装Java。
java -version
命令可以为您检查您已经有相关的JDBCJAR文件了吗?您需要的一个取决于:
您可以下载驱动程序from here的版本。这将为您提供3个不同文件中的9.2版驱动程序,用于3个版本的Java(8、11和15)
(如果您有较旧版本的SQL Server,则此版本的JDBC驱动程序可能不适合您。)
解压缩zip文件并在
sqljdbc_9.2/enu
目录中找到JAR文件。JAR文件的名称表示它支持的Java版本:在获得正确的JAR文件后,可以直接在Python连接代码中引用它的位置,作为额外的参数
以下是我的版本(在我的例子中,使用MySQL,因为我没有MS-SQL Server)——为了简单起见,我没有使用JSON文件:
当然,您需要将所有这些详细信息从my MySQL详细信息更改为MS-SQL Server详细信息,但请注意最后一个指向JAR文件的值
或者,您可以set the Java classpath,并使用它,而不是在代码中删除JAR文件位置。在本例中,类路径将指向一个目录,该目录将包含JAR文件。我觉得这种方法不太方便,但这取决于你
SQLServerJDBC驱动程序的另一个选项是使用JTD-请参见here。我在SQL Server的较旧版本中使用了此选项,没有任何问题
相关问题 更多 >
编程相关推荐