Windows上的pymssql可以连接到本地SQL Server,但不能连接到Azure SQL

时间:2016-08-19 13:40:46

标签: azure-sql-database pymssql

尝试使用pymssql连接到Azure SQL DB(v12), 我可以使用pymssql连接查询和写入我的本地MSSQL实例。

我收到“Adaptive Server连接失败”失败错误,我的研究似乎指向FreeTDS,但我没有在我的机器上安装FreeTDS。

使用tsql实用程序,我可以连接到Azure SQL实例

为什么我无法使用pymssql连接?

pymssql连接字符串

import pymssql
conn = pymssql.connect(server='<severname>.database.windows.net',user='mickey@in4live', password='<pass>', database='tesdb')
cursor = conn.cursor()
cursor.execute("select 1")

输出

  

conn = pymssql.connect(server ='。database.windows.net',user ='mickey @',database ='tesdb')     在pymssql.connect文件“pymssql.pyx”,第641行(pymssql.c:10824)   pymssql.OperationalError:(20002,'DB-Lib错误消息20002,严重性9:\ nAdaptive Server连接失败(:1433)\ n'

然而

tsql -H <servername>.database.windows.net -p 1433 -U mickey@<servername> -P <pass>

成功连接

2 个答案:

答案 0 :(得分:3)

使用pip install pymssql安装的pymssql的默认Windows版本静态链接到FreeTDS,因此pymssql二进制文件(.pyd files)包含要建立的所需FreeTDS组件<强大>未加密连接。这足以连接到不需要安全连接的许多(大多数?)本地SQL Server安装。

但是,与Azure SQL数据库的所有连接都需要加密(参考:here),因此Windows上的基本pip install pymssql将无法连接到Azure SQL数据库。相反,我们需要安装带有SSL支持的pymssql,如以下MSDN文章

中所述

Step 1: Configure development environment for pymssql Python development

其中“第1步”是指Microsoft的Azure教程中的第一步

Connect to SQL Database by using Python

答案 1 :(得分:-1)

@Wasky,我还建议您使用pyodbc而不是pymssql。 Windows上最新版本的pymssql存在一些导致ssl链接问题的ssl问题。

步骤1:安装Microsoft ODBC驱动程序11,13或13.1:https://www.microsoft.com/en-us/download/details.aspx?id=50420

第2步:安装pyodbc

> cd C:\Python27\Scripts>  
> pip install pyodbc 

第3步:运行样本

import pyodbc 
server = 'tcp:myserver.database.windows.net' 
database = 'mydb' 
username = 'myusername' 
password = 'mypassword' 
cnxn = pyodbc.connect('DRIVER={ODBC Driver 13 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = cnxn.cursor()

让我知道这是怎么回事。