代码之家  ›  专栏  ›  技术社区  ›  TomBombadil

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

  •  4
  • TomBombadil  · 技术社区  · 6 年前

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

    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>;')
    

    其中(<)&燃气轮机;如果输入了正确的字符串,我的脚本将卡在这一行上,在执行键盘中断之前不会打印任何内容。

    我还想 the official MS Drivers 要工作,请使用Debian 9版本,但我无法安装这些软件包,因为 msodbcsql 在curl命令和之后仍然无法定位 apt-get update .

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

    提前谢谢你。

    2 回复  |  直到 6 年前
        1
  •  3
  •   Phonolog    6 年前

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

    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"]
    

    基本上分为三个步骤:

    1. 安装PyODBC和tds的依赖项
    2. 编辑 /etc/odbcinst.ini
    3. 安装PyODBC,例如: pip install pyodbc

    在我的代码中,我可以像这样连接到db:

    connection = pyodbc.connect(driver='{FreeTDS}',
                                server='111.66.111.66\SQLEXPRESS',
                                uid='sa', pwd='notmyactualpw')
    
        2
  •  2
  •   Eugene D. Gubenkov    4 年前

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

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

    以下是一些详细信息: https://github.com/denisenkom/pytds

    pip install python-tds