Python - Pyodbc连接错误

时间:2017-05-05 23:36:16

标签: python sql-server authentication pyodbc

我正在尝试使用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')

请分享您对我出错的地方的看法。

3 个答案:

答案 0 :(得分:4)

有两个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。 希望它会对你有所帮助。

答案 1 :(得分:0)

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)

答案 2 :(得分:0)

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

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)