python 与 SQL 服务器的连接

python connection with SQL server

我使用 pyodbcpypyodbc python 包连接到 SQL 服务器。

司机使用了这些中的任何一个['SQL Server', 'SQL Server Native Client 10.0', 'ODBC Driver 11 for SQL Server', 'ODBC Driver 13 for SQL Server']

连接字符串:

connection = pyodbc.connect('DRIVER={SQL Server};'
'Server=aaa.database.windows.net;'
'DATABASE=DB_NAME;'
'UID=User_name;'
'PWD=password')

现在我收到类似

的错误消息
DatabaseError: (u'28000', u"[28000] [Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user

但是我可以通过SQL服务器管理工​​作室连接到服务器。

它基于 SQL 服务器身份验证,而不是 Windows 身份验证。

这是关于 python 包和 driver 问题还是数据库问题???如何解决?

问题不是驱动问题,您可以看到错误消息是DatabaseError: Login failed for user,这意味着如果用户尝试使用无法验证的凭据登录,就会出现此问题。我怀疑您是使用 windows 身份验证登录的,如果是这样,请改用 Trusted_Connection=yes

connection = pyodbc.connect('DRIVER={SQL Server};Server=aaa.database.windows.net;DATABASE=DB_NAME;Trusted_Connection=yes')

SQL Server Authentication modes的区别请参考

我看到您的脚本中没有定义 port

使用 pyodbc ${DBName} ${DBUser} ${DBPass} ${DBHost} ${DBPort} 连接到服务器的一般方法,其中 DBName 是您的数据库名称,DBUser 是用于连接它的用户名,DBPass是密码,DBHost是你数据库的URL,DBPort是你用来连接数据库的端口。

我使用 MS SQL,所以我的端口是 1433,你的可能不同。

我今天刚遇到这个问题,然后就解决了。

我认为问题出在您的连接字符串中的驱动程序定义。你可以试试下面的方法。

connection = pyodbc.connect('DRIVER={SQL Server Native Client 10.0}; Server=aaa.database.windows.net; DATABASE=DB_NAME; UID=User_name; PWD=password')

您可以在密码

后的连接字符串中添加 Trusted_Connection=NO;

我应用了您的连接字符串并使用我的服务器连接详细信息对其进行了更新,并且工作正常。 您确定您传递的是正确的用户名和密码吗? 登录失败表示连接建立成功,但认证未通过