使用 Windows 身份验证连接到 SQL 数据库

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

我的计算机上有一个 SQL 数据库,我正在尝试使用 python 连接该数据库。 首先,当我使用 SQL Server Management Studio 连接到数据库时,我使用了选项“通过 Windows 身份验证连接”。现在我正在尝试使用 python 以相同的方式连接到它。这是我的代码

import pyodbc
cnxn = pyodbc.connect(r'Driver={SQL Server};Server=localhost; \
                      Database=fatigue_life_test_db;Trusted_Connection=yes;')
cursor = cnxn.cursor()

cnxn.close()

第二行抛出以下错误:

pyodbc.OperationalError: ('08001', '[08001] [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not exist or access denied. (17) (SQLDriverConnect); [08001] [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Connect()). (5); [08001] [Microsoft][ODBC SQL Server Driver]Invalid connection string attribute (0)')

我还尝试用服务器的名称替换 localhost

(MSSQLSERVER)
,但它仍然给出相同的错误。我对
SQL
数据库很陌生,所以我可能在这里遗漏了一些明显的东西。即使进行了大量的谷歌搜索,我也找不到解决这个问题的方法。

python pyodbc
2个回答
0
投票

您可以通过以下几点解决此问题:

  1. 验证 SQL Server 实例名称:localhost 或 local
  2. 检查 SQL Server 服务是否正在运行。
  3. 确保 TCP/IP 协议已启用。如果没有,您可以通过 SQL 服务器配置管理器来完成。
  4. 检查 Windows 防火墙设置是否阻止您的 SQL Server 实例。
  5. 写下这段代码并再次检查:
import pyodbc

try:
    cnxn = pyodbc.connect(
        r'Driver={SQL Server};'
        r'Server=localhost,1433;'  # Assuming the default port 1433
        r'Database=fatigue_life_test_db;'
        r'Trusted_Connection=yes;'
    )
    cursor = cnxn.cursor()
    print("Connection established.")
except pyodbc.Error as e:
    print("Error in connection:", e)
finally:
    if 'cnxn' in locals() and cnxn:
        cnxn.close()

0
投票

那里!我相信您的连接字符串缺少用户名和密码。尝试这样:

cnxn = pyodbc.connect(r'Driver={SQL 服务器};服务器=localhost;数据库=fatigue_life_test_db;Trusted_Connection=yes;UID={USERNAME};PWD={PASSWORD}')

您可以在下面的链接 (learn.microsoft.com) 中获取有关“步骤 3:使用 pyodbc 连接到 SQL 的概念验证”第 5 项的更多信息:

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