如何解决尝试使用python / pyodbc和raspberry pi连接到Azure SQL数据库
使用以下代码,我尝试连接到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] [驱动程序管理器]无法打开lib'SQL Server':找不到文件(0)(SQLDriverConnect)“)
我使用以下命令来安装pyodbc:
sudo apt-get install python-pyodbc
sudo apt-get install unixodbc-dev
pip3 install pyodbc
预先感谢
解决方法
正如我的评论中提到的那样,我最近走了这条路,并且永远无法从Microsoft获得驱动程序来处理我的Rasberry PI。我推测这与ARM体系结构有关。因此,即使Rasberry PI OS是基于Debian的并且Microsoft提供了驱动程序,我也无法使它们正常工作。
我最终使用了FreeTDS
首先,使用以下命令进行安装:
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')
,
请在此处引用pyodbc
:Quickstart: Use Python to query a database in Azure SQL Database or Azure SQL Managed Instance
import pyodbc
server = '<server>.database.windows.net'
database = '<database>'
username = '<username>'
password = '<password>'
driver= '{ODBC Driver 17 for SQL Server}'
with pyodbc.connect('DRIVER='+driver+';SERVER='+server+';PORT=1433;DATABASE='+database+';UID='+username+';PWD='+ password) as conn:
with conn.cursor() as cursor:
cursor.execute("SELECT TOP 20 pc.Name as CategoryName,p.name as ProductName FROM [SalesLT].[ProductCategory] pc JOIN [SalesLT].[Product] p ON pc.productcategoryid = p.productcategoryid")
row = cursor.fetchone()
while row:
print (str(row[0]) + " " + str(row[1]))
row = cursor.fetchone()
您尚未设置ODBC驱动程序版本,并且服务器没有前缀tcp:
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。