我正在使用pymssql库将python连接到Sql Server。我可以使用windows / sql server身份验证进行连接。我想使用Active Directory身份验证进行连接。
尝试以下连接字符串。但它失败了,错误:
unexpected keyword authentication
conn = pymssql.connect(server='adventureworks.database.windows.net', authentication = 'Active Directory Password',user='username@server.com',password='Enterpasswordhere', database='dbo')
答案 0 :(得分:2)
如果您使用的是Windows计算机,则可以使用pyodbc 13.1和Microsoft登录助手执行此操作。
安装pyodbc
https://www.microsoft.com/download/details.aspx?id=53339
测试连接
导入pyodbc
server = 以windows.net结尾的服务器名称
database = 数据库
username = 用户名
密码= 密码
tablename = tablename
driver ='{SQL Server的ODBC驱动程序13}'
cnxn = pyodbc.connect('DRIVER ='+ driver +
'; PORT = 1433; SERVER ='+ server +
“; PORT = 1443; DATABASE =“+数据库+
'; UID =' +用户名+
'; PWD ='+密码+
'; Authentication = ActiveDirectoryPassword')
cursor = cnxn.cursor()
cursor.execute(“SELECT TOP 20 * from”+ tablename)
row = cursor.fetchone()
while row:
print str(row [0])+“”+ str(row [1])
row = cursor.fetchone()
答案 1 :(得分:0)
Note that pymssql.connect does not have an 'authentication' parameter。您将它作为命名的arg传递,它是无效的,以及您看到错误的原因。
请参阅this example,了解如何使用Windows身份验证进行连接:
import re
def address_list(address_range):
begin,end = address_range.split('-')
Nb,Ne=re.findall(r"\d+", address_range)
#we deduce the paading from the digits of begin
padding=len(re.findall(r"\d+", begin)[0])
#first we decide whether we should use begin or end as a template for the ouput
#here we keep the first that is matching something like ab01 or 01ab
template_base = re.findall(r"[a-zA-Z]+\d+|\d+[a-zA-Z]+", address_range)[0]
#we make a template by replacing the digits of end by some format syntax
template=template_base.replace(re.findall(r"\d+", template_base)[0],"{{:0{:}}}".format(padding))
#print("template : {} , example : {}".format(template,template.format(1)))
return [template.format(x) for x in range(int(Nb), int(Ne)+1)]
print(address_list('1-12A'))
print(address_list('B01-B12'))
print(address_list('C01-9'))