当前位置: 首页 > 知识库问答 >
问题:

通过Jupyter连接到Azure SQL Server(问题!)

屠锦
2023-03-14

我正在尝试从安装了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平台。

有什么想法吗?

多谢了。

共有1个答案

徐景明
2023-03-14

从表面上看,这可能是因为您的ODBC驱动程序没有正确安装。这很可能是因为您没有正确设置字符串的格式。所以,这里有一个你需要做的全面列表:

  1. 安装正确的ODBC驱动程序以连接SQLServer

这取决于您的操作系统当然,如果您有MacOS,您可以继续使用自制程序安装它,如下所示:

brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release
brew update
brew install msodbcsql17 mssql-tools

如果你还不知道什么是自酿,那就来看看自酿官网吧。如果这不是您的操作系统,那么请参阅本指南中的操作系统特定说明。

完成这些操作后,请确保按照安装结束时的说明进行操作,这些说明告诉您为了使ODBC正常工作,需要对dotfiles进行哪些更改。

确保正确获取连接字符串。连接字符串位于SQLServer数据库的“连接字符串”部分,位于ODBC:

这个应该能奏效。但是,如果没有,那么您需要检查是否有正确的用户名、密码和表。如果您确信它们是正确的,那么您可能需要联系支持,因为他们可能已经将驱动程序的要求更改为数据库的特定版本。

 类似资料:
  • 问题内容: 我将Redis To Go与https://github.com/mranney/node_redis库结合使用。Redis给了我一个看起来像的URL,但是我不知道如何使用它,因为它只占用了主机和端口。 问题答案: 我相信您拥有的网址的方案是: 。 我不相信被使用。提供了两种登录方法:和。自述文件中有详细信息,但以下是相关部分供参考: redis.createClient(端口,主机,

  • 我正在尝试连接到Amazon上的EC2实例。连接错误时-权限被拒绝(公钥)。安装cmhod 400 mypem.pem文件没有帮助。连接日志: openssh_6.2p2,OSSLShim 0.9.8r 2011年12月8日debug1:读取配置数据/etc/ssh_config debug1:/etc/ssh_config行20:应用*debug1:连接到54.214.31.168[54.214

  • 问题内容: 我正在尝试通过网络连接到MySQL数据库。我已经安装了MySQL,并且该服务在默认端口上运行。我还将SQL连接器安装到jar文件中,并将Java JDK添加到服务器计算机中。我可以使用以下代码连接到本地数据库: 但是,当我尝试通过IP地址(例如:192.168.1.45)通过网络连接到它时: 我收到连接错误: 有人知道这个问题是什么吗?我需要添加其他地址吗?我已经使用地址添加了默认端口

  • 问题内容: 我已经在服务器上安装了Kibana 5.4和Elastic search 5.4,我可以通过使用本地计算机上的curl来访问Kibana和Elastic search 我得到以下回应 var hashRoute =’/ app / kibana’; var defaultRoute =’/ app / kibana’; var hash = window.location.hash;

  • 我已经在服务器上安装了Kibana 5.4和Elastic search 5.4,我可以使用 我得到以下回应 var hashRoute='/app/kibana'; var defaultRoute='/app/kibana'; var hash=window.location.hash; if(hash.length){window.location=hashRoute hash;}其他{wi

  • 我有一台安装了Hadoop和Spark的机器。下面是我目前的环境。 Python3.6 /root/.ipython/profile_pyspark/startup/00-pyspark-setup.py /root/anaconda3/share/jupyter/kernels/pyspark/kernel.json kernel.json 所以,由于sc无法初始化,如果我想运行以下操作,它失败