python - 如何在 CentOS 中安装 jdbc 并在 python 函数中使用包?

标签 python jdbc centos

我是编码时使用 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 中安装此驱动程序的正确方法,但似乎没有任何效果。有什么建议吗?我的 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命令可以为您检查。

您是否已有相关的 JDBC JAR 文件?您需要的取决于:

  • 您正在使用的 MS-SQL Server 的版本,以及
  • 你安装的Java版本

  • 您可以下载驱动程序的版本from here .这为您提供了 9.2 版本的驱动程序,在 3 个不同的文件中,用于 3 个 Java 版本(8、11 和 15)。
    (如果您有旧版本的 SQL Server,则此版本的 JDBC 驱动程序可能不适合您。)
    解压缩 zip 文件并在 sqljdbc_9.2/enu 中找到 JAR 文件。目录。 JAR 文件的名称表示它支持的 Java 版本:
    mssql-jdbc-9.2.1.jre8.jar
    mssql-jdbc-9.2.1.jre11.jar
    mssql-jdbc-9.2.1.jre15.jar
    
    获得正确的 JAR 文件后,您可以直接在 Python 连接代码中引用其位置,作为额外参数。
    这是我这样做的版本(在我的情况下使用 MySQL,因为我没有 MS-SQL Server)-为简单起见,我没有使用 JSON 文件:
    jaydebeapi.connect("com.mysql.cj.jdbc.Driver",
                       "jdbc:mysql://localhost:3306/my_db",
                       ["myuser", "mypass"],
                       "/path/to/mysql-connector-java-8.0.25.jar")
    
    当然,您需要将所有这些详细信息从我的 MySQL 详细信息更改为您的 MS-SQL Server 详细信息 - 但请注意指向 JAR 文件的最后一个值。

    或者,您可以 set the Java classpath , 并使用它,而不是在代码中提供 JAR 文件位置。在这种情况下,类路径将指向一个目录,该目录将包含 JAR 文件。我发现这种方法不太方便,但这取决于你。

    SQL Server JDBC 驱动程序的另一个选项是使用 jTDS - 请参阅 here .我已经将它与旧版本的 SQL Server 一起使用,没有任何问题。

    关于python - 如何在 CentOS 中安装 jdbc 并在 python 函数中使用包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68007546/

    相关文章:

    mysql - pentaho 设置到 AWS Aurora ( mysql ) 堡垒

    php - 在 PHP 7.2 中进行 Curl 安装,但在应用程序中不起作用

    sed - 如何从文本文件中删除多行,包括匹配的行?

    python - 如何将 line.set_data 用于 matplotlib 中的二维数组数据?

    python - 计算列表中对象出现的次数

    hibernate - 为什么有不同类型的事务管理器?

    java - 使用 Java 和 Netbeans 从我的数据库中选择计数

    python - 如何在列表 python 中查找并只保留 double ?

    python - 测试我的心理 build 者实验的最佳方法是什么?我可以自动回复吗

    perl - 庆典 : cpan: command not found