pyodbc-databricks-('01000',“[01000] [unixODBC][驱动程序管理器]无法打开 lib 'ODBC Driver 17 for SQL Server':找不到文件 (0)(SQLDriverConnect)")

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

我正在 Azure Databricks 中执行 SQL 操作,为此,我正在导入 ODBC 驱动程序。

下面是代码,它作为初始化脚本上传到集群。

%sh
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list 
apt-get update
ACCEPT_EULA=Y apt-get install msodbcsql17
apt-get -y install unixodbc-dev
sudo apt-get install python3-pip -y
pip3 install --upgrade pyodbc

这是用于连接服务器的脚本。

    connect_string = "DRIVER={ODBC Driver 17 for SQL Server};"
    connect_string += f"SERVER={jdbchostname},"
    connect_string += f"{jdbcport};"
    connect_string += f"DATABASE={db};"
    connect_string += f"UID={username};"
    connect_string += f"PWD={pwd}"

    conn = pyodbc.connect(connect_string)
    cursor = conn.cursor()

此脚本引发错误。

('01000', "[01000] [unixODBC][驱动程序管理器]无法打开 lib 'ODBC SQL Server 驱动程序 17':找不到文件 (0) (SQLDriverConnect)")

azure-databricks pyodbc
1个回答
0
投票

您可以使用 JDBC 驱动程序连接到 SQL 服务器,而不是安装 ODBC 驱动程序或添加到初始化脚本中。使用以下代码:

jdbcHostname = "<servername>.database.windows.net"     
jdbcPort = 1433    
jdbcDatabase = "<dbname>"     
jdbcUsername = "<username>"             
jdbcPassword = "<password>"            
jdbcDriver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"     
table = "<tableName>"
jdbcUrl = f"jdbc:sqlserver://{jdbcHostname}:{jdbcPort};databaseName={jdbcDatabase}"
df = spark.read.format("jdbc").option("driver", jdbcDriver).option("url", jdbcUrl).option("dbtable", table).option("user", jdbcUsername).option("password", jdbcPassword).load()

这样就成功连接到SQL服务器了,如下图:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.