【问题标题】:Python - Pyodbc Connection errorPython - Pyodbc 连接错误
【发布时间】:2017-05-05 23:36:16
【问题描述】:

我正在尝试使用 Python3.4 连接到 SQL Server 数据库

这是适合我的代码

cnxn = pyodbc.connect('DRIVER={ODBC Driver 13 for SQL Server};SERVER=DESKTOP-GDM2HQ17\SQLEXPRESS;DATABASE=pyconnect;Trusted_Connection=yes')

然后我登录到我的管理工作室 - 使用 Windows 连接的数据库。

这是代码,对我不起作用:

cnxn = pyodbc.connect('DRIVER={ODBC Driver 13 for SQL Server};SERVER=DESKTOP-GDM2HQ17\SQLEXPRESS;DATABASE=pyconnect;UID=DESKTOP-GDM2HQ17\sid;PWD=123')

请分享您对我哪里出错的想法。

【问题讨论】:

  • 错误信息是什么?
  • 用户登录失败。
  • 你可以试试其他用户吗,你好像在用SID。
  • 实际上我使用 Windows auth 登录 SSMS,这些是我的凭据。

标签: python sql-server authentication pyodbc


【解决方案1】:

有两个SQL Server Authentication modes

1、通过Windows认证连接:

当用户通过 Windows 用户帐户连接时,SQL Server 使用操作系统中的 Windows 主体令牌验证帐户名和密码。

2、通过SQL Server认证连接:

使用 SQL Server 身份验证时,会在 SQL Server 中创建不基于 Windows 用户帐户的登录。用户名和密码都是使用 SQL Server 创建并存储在 SQL Server 中的。

您的第一个代码正在通过 Windows 身份验证连接。

您的第二个代码无法正常工作,因为它试图查找存储在 SQL Server 中的凭据(登录名和密码),但凭据不是在 SQL Server 中创建的。

此外,您可以参考官方文档以了解如何Change Server Authentication Mode。 希望对你有帮助。

【讨论】:

  • 谢谢先生!正是我想知道的。
【解决方案2】:

DRIVER='{SQL Server}' 有效

下面的代码已经过测试.....

import pyodbc
con = pyodbc.connect('Driver={SQL Server};'
                  'Server=LAPTOP-PPDS6BPG;'
                  'Database=training;'
                  'Trusted_Connection=yes;')

cursor = con.cursor()
sql_query =  'SELECT * FROM Students'
cursor.execute(sql_query)

for row in cursor:
    print(row)

【讨论】:

    【解决方案3】:

    这对我来说比我能找到的任何其他方法都好

    import pyodbc 
    import pandas as pd
    
    conn = pyodbc.connect('Driver={SQL Server};'
                          'Server=10.****;'
                          'Database=Ma**;'
                          'UID=sql**;'
                          'PWD=sql**;')
    
    cursor = conn.cursor()
    
    sql = """\
    EXEC [dbo].[GetNewPayment] @Login=?, @PasswordMD5=?, @RevokeTimeFrom=?, @RevokeTimeTo=? Status=?
    """
    params = ('a***', 'c2ca***', '2021-05-01','2021-05-02', '3')
    cursor.execute(sql, params)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-27
      • 1970-01-01
      • 2014-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-16
      • 1970-01-01
      相关资源
      最近更新 更多