【问题标题】:Connecting to Microsoft SQL Server in Python在 Python 中连接到 Microsoft SQL Server
【发布时间】:2022-02-25 05:45:20
【问题描述】:

我目前遇到的问题是无法通过我可以通过 Tableau 连接的 python 连接到 microsoft sql server 数据库。我正在尝试跟踪一些我们无法在未来几年保存在数据库中的历史数据。这使用 Windows 身份验证,并且我已经确认它可以从我的本地计算机到 Tableau 中的服务器工作。但是,我不确定 Tableau 使用什么驱动程序来建立这种连接。我尝试在 Tableau 中通过 ODBC 进行连接,但遇到了与在 python 中相同的问题。

   import pyodbc
   cnxn_write = pyodbc.connect(driver='{SQL Server}',
                            server='FQDN, Port Number\SQLEXPRESS',
                            database='DataAnalytics',
                            trusted_connection='yes'
                           )

返回以下错误代码

---------------------------------------------------------------------------
OperationalError                          Traceback (most recent call last)
C:\Users\User\AppData\Local\Temp/ipykernel_6969/555555555.py in <module>
      3 import pyodbc
      4 import date
time
----> 5 cnxn_write = pyodbc.connect(driver='{SQL Server}',
      6                             server='server-name\SQLEXPRESS',
      7                             database='DataAnalytics',

OperationalError: ('HYT00', '[HYT00] [Microsoft][ODBC SQL Server Driver]Login timeout expired (0) (SQLDriverConnect)')

以下代码返回相同的错误。,

    import pyodbc
    cnxn_write = pyodbc.connect(driver='{SQL Server}',
                            server='FQDN, Port Number',
                            database='DataAnalytics',
                            trusted_connection='yes'
                           )

有人对我应该使用什么驱动程序来尝试连接这个数据库有任何想法吗?我试过 {SQL Server} 和 {ODBC Driver 17 for SQL Server}。或者这更有可能在服务器端而不是在我端?

谢谢大家!

【问题讨论】:

  • 您可能没有连接到 sql server。您确定您的 FQDN/IP 正确吗?运行 python 的计算机和 SQL Server 之间的端口是否开放?
  • 是的,FQDN 是正确的,因为我使用相同的 FQDN 通过 Tableau 中的 Microsoft SQL Server 选项进行连接。我还假设这意味着我的计算机和 SQL Server 之间的端口是开放的。但是,当我回到 Python 时,我只是超时了。这就是为什么我认为是驱动因素,但我不能 100% 确定这一事实。
  • 连接字符串中没有端口号,只有实例名称\SQLEXPRESS。实例名称解析要求 SQL Browser 服务正在运行并可通过 udp/1434 访问,因此您需要允许防火墙访问 udp/1434 以及实例的 tcp 端口才能使其正常工作。如果您已经在您的 NAT/路由器上配置了一个端口来访问您的 SQL 服务器实例,例如 tcp 端口 1433,那么请在连接字符串中使用它,例如:FullyQualifiedServerNameOrIpAddress,1433
  • 我现在用上面提到的 FQDN 和端口号语句更新了我的脚本。我已经向我的 IT 部门确认了端口号,但仍然遇到此问题。还有其他可能的想法吗?

标签: python sql-server driver windows-authentication tableau-desktop


【解决方案1】:

因此,以防其他人将来遇到此问题。 pyodbc 未正确连接到驱动程序 ODBC Driver 17 for SQL Server。我的修复是在运行 Windows 可执行文件 odbcad32.exe 后创建用户 DSN。正确识别数据库的服务器、凭据和镜像服务器。我将此用户 DSN 称为“sqlexpress”,以下是我现在的连接字符串。

cnxn_write = pyodbc.connect(r'DSN=sqlexpress')

遗憾的是,这更像是一种解决方法,而不是解决方案,但它现在可以正确连接到我的数据库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多