Raspberry pi 尝试使用python/pyodbc和raspberry pi连接到azure SQL数据库

Raspberry pi 尝试使用python/pyodbc和raspberry pi连接到azure SQL数据库,raspberry-pi,azure-sql-database,pyodbc,Raspberry Pi,Azure Sql Database,Pyodbc,使用以下代码,我尝试连接到azure数据库: server = 'tcp:myserver.database.windows.net' database = 'DBFREE' username = 'user' password = 'password' conn = pyodbc.connect('DRIVER={SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password) 但出现以

使用以下代码,我尝试连接到azure数据库:

server = 'tcp:myserver.database.windows.net'
database = 'DBFREE'
username = 'user'
password = 'password'
conn = pyodbc.connect('DRIVER={SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
但出现以下错误:

pyodbc.Error:('01000',“[01000][unixODBC][Driver Manager]无法打开库'SQL Server':找不到文件(0)(SQLDriverConnect)”)

我使用以下命令安装pyodbc:

sudo apt-get install python-pyodbc
sudo apt-get install unixodbc-dev
pip3 install pyodbc

thanx提前

请参考此处的
pyodbc

导入pyodbc
服务器='.database.windows.net'
数据库=“”
用户名=“”
密码=“”
驱动程序=“{SQL Server的ODBC驱动程序17}”
使用pyodbc.connect('DRIVER='+DRIVER+';SERVER='+SERVER+';PORT=1433;DATABASE='+DATABASE+';UID='+username+';PWD='+password)作为连接:
使用conn.cursor()作为光标:
cursor.execute(“从[SalesLT].[ProductCategory]pc加入[SalesLT].[Product]p在pc.productcategoryid=p.productcategoryid上选择前20名pc.Name作为CategoryName,p.Name作为产品名称”)
row=cursor.fetchone()
而行:
打印(str(第[0]行)+“”+str(第[1]行))
row=cursor.fetchone()

您没有设置ODBC驱动程序版本,服务器也没有前缀
tcp:

,正如我在评论中提到的,我最近走了这条路,无法让Microsoft的驱动程序在我的Rasberry PIs上运行。我推测这与ARM架构有关。因此,即使Rasberry PI OS基于Debian,并且微软提供驱动程序,我也无法让它们工作

我最终使用了

首先,使用以下命令安装:

sudo apt-get install freetds-dev freetds-bin unixodbc-dev tdsodbc
sudo pip install pyodbc sqlalchemy
完成后,在文本编辑器中打开以下文件:

/etc/odbcinst.ini

添加以下内容:

[FreeTDS]
Description=FreeTDS Driver
Driver=/usr/lib/arm-linux-gnueabihf/odbc/libtdsodbc.so
Setup=/usr/lib/arm-linux-gnueabihf/odbc/libtdsS.so
然后在python连接字符串中使用
FreeTDS
作为驱动程序并添加
;TDS_Version=8.0
到连接字符串的末尾:

server = 'servername.database.windows.net'
database = 'database'
username = 'user'
password = 'password'
driver = 'FreeTDS'

pyodbc.connect('DRIVER='+driver+';SERVER='+server+';PORT=1433;DATABASE='+database+';UID='+username+';PWD='+ password + ';TDS_Version=8.0')

请参考这里的代码:我花了一周时间尝试了这里提到的所有相同的链接和文章,试图让我的Rasberry PIs连接到Azure数据库。它们不起作用。我认为这与ARM架构有关。因此,尽管Rasberry PI操作系统基于Debian,并且微软提供了驱动程序,但它们不起作用。我最终使用了。仍然无法工作:(:无法打开库'ODBC Driver 17 for SQL Server':找不到文件(0)(SqlDriverConnection)”@StevenNoppe您安装了它吗?请参阅:是,但我收到一个错误:“找不到包msodbcsql17。”“在这一行:sudo ACCEPT_EULA=Y apt get installmsodbcsql17@StevenNoppe,您能同时测试ODBC 17和13吗?在此处下载:如果您安装了v17 msodbcsql包(该包曾短暂可用),则应在安装msodbcsql17包之前将其删除。这将避免冲突。msodbcsql17包可以与MSODBCSQLV13包并排安装。您好,我似乎更进一步了,thanx。但是现在我得到了以下错误:pyodbc.OperationalError:('08001','[08001][unixODBC][FreeTDS][SQL Server]无法连接到数据源(0)(SQLDriverConnect)')是什么导致了这个错误?@StevenNoppe我记得现在必须在连接字符串的末尾添加“TDS_Version=8.0”。试试看,我会仔细检查我的,并在这里更新答案。我想我发现了问题:我忘了添加需要连接的端口!
server = 'servername.database.windows.net'
database = 'database'
username = 'user'
password = 'password'
driver = 'FreeTDS'

pyodbc.connect('DRIVER='+driver+';SERVER='+server+';PORT=1433;DATABASE='+database+';UID='+username+';PWD='+ password + ';TDS_Version=8.0')