Python 使用pyodbc将Raspberry Pi 3连接到MSSQL服务器

Python 使用pyodbc将Raspberry Pi 3连接到MSSQL服务器,python,sql-server,raspberry-pi3,raspbian,pyodbc,Python,Sql Server,Raspberry Pi3,Raspbian,Pyodbc,我目前正在尝试使用Raspbian Stretch Lite(2017年11月)将我的raspberry pi 3连接到MSSQL服务器。我正在跟踪,并将驱动程序和设置字段替换为 Driver=/usr/lib/arm-linux-gnueabihf/odbc/libtdsodbc.so Setup=/usr/lib/arm-linux-gnueabihf/odbc/libtdsS.so 匹配pi上的路径,正如有人在评论部分建议的那样。当我试图通过python脚本与 conn = pyodbc

我目前正在尝试使用Raspbian Stretch Lite(2017年11月)将我的raspberry pi 3连接到MSSQL服务器。我正在跟踪,并将驱动程序和设置字段替换为

Driver=/usr/lib/arm-linux-gnueabihf/odbc/libtdsodbc.so
Setup=/usr/lib/arm-linux-gnueabihf/odbc/libtdsS.so
匹配pi上的路径,正如有人在评论部分建议的那样。当我试图通过python脚本与

conn = pyodbc.connect('DRIVER=FreeTDS;SERVER<IP_OR_HOSTNAME>;PORT=1433;DATABASE<DATABASE_NAME>;UID=<USERNAME>;PWD=<PASSWORD>;')
conn=pyodbc.connect('DRIVER=FreeTDS;SERVER;PORT=1433;DATABASE;UID=;PWD=;'))
如果输入了正确的字符串,我的脚本就会卡在这一行上,而不会打印任何内容,直到我执行键盘中断

我也尝试使用Debian 9版本开始工作,但我无法安装软件包,因为在curl命令和apt get update之后仍然找不到
msodbcsql

我是否缺少让FreeTDS工作的东西,或者脚本被卡住意味着pi无法连接到服务器?是否有其他可能将pi连接到MSSQL

提前感谢。

我正在使用以下命令将我的Raspberry Pi 3连接到远程SQL Express数据库。它应该记录所有需要的步骤。我的Pi正在运行,它基于Raspian

FROM arm32v7/python:3

RUN apt-get update

#1. Install dependencies for PyODBC and tds
RUN apt-get install -y tdsodbc unixodbc-dev
RUN apt install unixodbc-bin -y
RUN apt-get clean -y

#2. Edit /etc/odbcinst.ini
RUN echo "[FreeTDS]\n\
Description = FreeTDS unixODBC Driver\n\
Driver = /usr/lib/arm-linux-gnueabi/odbc/libtdsodbc.so\n\
Setup = /usr/lib/arm-linux-gnueabi/odbc/libtdsS.so" >> /etc/odbcinst.ini

#3. Install requirements (contains pyodbc)
COPY ./requirements.txt /usr/src/app/requirements.txt
RUN pip install --no-cache-dir -r requirements.txt

#Copy and run my app
COPY . .
CMD [ "python", "app.py"]
基本上分为三个步骤:

  • 安装PyODBC和tds的依赖项
  • 编辑
    /etc/odbcinst.ini
  • 安装PyODBC,例如:
    pip安装PyODBC
  • 在我的代码中,我可以像这样连接到db:

    connection = pyodbc.connect(driver='{FreeTDS}',
                                server='111.66.111.66\SQLEXPRESS',
                                uid='sa', pwd='notmyactualpw')
    

    从ARM Linux板连接到MS SQL Server的另一个选择是使用
    pytds
    ——我的基于ARM的ASUS Tinker板运行在Debian 9上,这对我来说非常有吸引力

    pytds
    与MS-ODBC驱动程序或“Free-TDS”相比,没有太多的依赖性,您只需安装pip包就可以了。据我所知,这是因为TDS协议实现是用Python本身编写的

    以下是一些细节:


    pip安装python-tds

    该教程适用于Ubuntu,请仔细检查odbc.ini的位置。可能是/etc/unixODBC/odbc.ini。找到odbc.ini不是问题,我更正了路径。您的案例中是否存在/etc/freetds/freetds.conf?当使用python覆盖我将随此文件提供的所有信息时,编辑freetds.conf真的有必要吗?它可以给您一个独立的测试,一旦这一点起作用,您就可以回到python了。谢谢您的回答。我遵循了您的命令,但现在我收到了错误“无法连接到数据源”。我检查了登录信息,但它是正确的。我想驱动程序现在可以工作了。嗯,那就看看这个吧。我找到了一个解决方法,使用我在odbc.ini中指定的DSN。仍然不知道错误是什么,因为我通过pyodbc.connect命令直接传递了相同的信息。幸运的是,pyodbc.connect支持使用DSN.Awesome。是的,整个事情非常棘手,有时甚至很神秘:DI还发现apt的驱动程序版本非常不稳定,并开始从源代码构建新版本。如果你面临类似的问题,你可以看看如何做到这一点。