【问题标题】:python connection with SQL server与 SQL 服务器的 python 连接
【发布时间】:2017-05-23 10:45:36
【问题描述】:

我使用了pyodbcpypyodbc的python包连接SQL server。

司机使用了这些['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 server management studio连接到服务器。

它关于 SQL Server 身份验证,而不是 Windows 身份验证。

这是关于python包和驱动问题还是DB问题???如何解决?

【问题讨论】:

标签: python pyodbc sqlconnection


【解决方案1】:

您可以在密码后的连接字符串中添加Trusted_Connection=NO;

【讨论】:

    【解决方案2】:

    我发现您的脚本中没有定义 port

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

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

    我今天遇到了这个问题,已经解决了。

    【讨论】:

      【解决方案3】:

      问题不是驱动问题,您可以看到错误消息是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')
      

      更多详情请参考my old answerSQL Server Authentication modes的区别。

      【讨论】:

      • 它的SQL server的用户名和密码..使用SQL认证
      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-02-16
          • 2019-10-21
          • 2018-08-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多