我正在尝试从安装了Jupyter的笔记本电脑连接到Azure SQL Server实例。在这方面相当新,但有可能很容易解决的问题。
我已经通过PIP安装了64位Python3.7、Jupyter和AMD64 v17 pyodbc。然而,当我试图通过Jupyter连接时,我只是得到连接或驱动问题,不是很确定。
下面是我试图运行的代码,以连接并返回一个简单的前10行查询。
import pyodbc
server = 'xxxsqlserver.database.windows.net'
database = 'xxx.dbo.table'
username = 'user'
password = 'password'
driver='{ODBC Driver 17 for SQL Server}'
cnxn = pyodbc.connect('DRIVER='+driver+';SERVER='+server+';PORT=1433;DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = cnxn.cursor()
cursor.execute("SELECT TOP 10 * FROM xxx.dbo.table")
row = cursor.fetchone()
while row:
print (str(row[0]) + " " + str(row[1]))
row = cursor.fetchone()
下面是我得到的错误消息:
InterfaceError Traceback(最近一次调用)在5 password='password‘6 Driver=’{SQL Server的ODBC Driver 17}‘---->7 cnxn=pyodbc.connect('Driver='+Driver+';Server='+Server+';port=1433;database='+database+';uid='+username+';pwd='+password)8 cursor=cnxn.cursor()9 cursor.execute(“从xxx.dbo.table中选择前10个*”)
InterfaceError:(“IM002”,“[IM002][Microsoft][ODBC驱动程序管理器]未找到数据源名称,且未指定默认驱动程序(0)(SQLDriverConnect)")
如果我将驱动程序更改为13,我会得到一个不同的错误
InterfaceError:('28000','[28000][Microsoft][SQL Server的ODBC驱动程序13][SQL Server]用户登录失败\'user\'。(18456)(SQLDriverConnect);[28000][Microsoft][SQL Server的ODBC驱动程序13][SQL Server]无法打开登录请求的数据库“xxx.dbo.table”。登录失败。(4060);[28000][Microsoft][SQL Server的ODBC驱动程序13]无效连接字符串属性(0);[28000][Microsoft][SQL Server的ODBC驱动程序13][SQL Server]用户登录失败\'user\'。(18456);[28000][Microsoft][SQL Server的ODBC驱动程序13][SQL
感觉像是司机做的不对,或者是我的方向不对。注:我没有安装任何版本13的驱动程序,但是安装了SSM,这就安装了一些SSM,这就可以很好地连接到Azure平台。
有什么想法吗?
多谢了。
从表面上看,这可能是因为您的ODBC驱动程序没有正确安装。这很可能是因为您没有正确设置字符串的格式。所以,这里有一个你需要做的全面列表:
这取决于您的操作系统当然,如果您有MacOS,您可以继续使用自制程序安装它,如下所示:
brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release
brew update
brew install msodbcsql17 mssql-tools
如果你还不知道什么是自酿,那就来看看自酿官网吧。如果这不是您的操作系统,那么请参阅本指南中的操作系统特定说明。
完成这些操作后,请确保按照安装结束时的说明进行操作,这些说明告诉您为了使ODBC正常工作,需要对dotfiles进行哪些更改。
确保正确获取连接字符串。连接字符串位于SQLServer数据库的“连接字符串”部分,位于ODBC:
这个应该能奏效。但是,如果没有,那么您需要检查是否有正确的用户名、密码和表。如果您确信它们是正确的,那么您可能需要联系支持,因为他们可能已经将驱动程序的要求更改为数据库的特定版本。