我正在尝试使用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')
请分享您对我出错的地方的看法。
答案 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)