通过“NETWORK”类型的 VPC 连接到 EC2 实例上的 SQL Server 时,AWS Glue 能否使用 PyODBC?

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

我在设置 PyODBC 时遇到了很大的困难,以至于我确信在我的情况下这是不可能的。我的情况是:

  • 我有一个使用 Python Shell 的 AWS Glue 作业。
  • 它使用“NETWORK”类型的连接连接到我的 EC2 实例。此连接包括 VPC、子网和安全组。
  • EC2实例是Windows服务器。它运行 Microsoft SQL Server。
  • 根据程序和功能,EC2 实例安装了“Microsoft ODBC Driver 17 for SQL Server”驱动程序。
  • 在 Python 中,我的连接字符串的形式为
    f'mssql+pyodbc://{username}:{password}@{host}:{port}/{database}?driver=ODBC+Driver+17+for+SQL+Server'
    。如果我将
    pyodbc
    切换为
    pymssql
    ,并将驱动程序部件切换为
    ?charset=ut8
    ,那么它就可以正常工作。

我尝试了无数种 ODBC 驱动程序规范排列,并且尝试使用

pyodbc.drivers()
(返回
['PostgreSQL', 'MySQL']
)进行调试,这让我得出结论:AWS Glue 根本不允许查看我的 EC2 实例 PyODBC 驱动程序。错误如

无法打开 lib 'driver=ODBC Driver 17 for SQL Server':找不到文件 (0) (SQLDriverConnect)”

很常见,但其他的出现取决于您输入字符串的方式。

我不是来这里询问如何解决这个问题的。我已经放弃了,并将我的标准定得低得多。相反,我问的是:上面列出的任何情况是否会导致无法通过 ODBC 连接? 指向已成功连接的非常相似案例的链接也将被接受。

python sql-server amazon-web-services aws-glue pyodbc
1个回答
0
投票

AWS Glue Python Shell 作业不支持开箱即用的 ODBC 驱动程序。您需要使用 JDBC 或其他支持的方法。或者,您可以尝试将 AWS Glue ETL 作业与 Spark 结合使用,它对 JDBC 连接有更好的支持。

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