使用 pyodbc 将 Raspberry Pi 3 连接到 MSSQL Server
Connecting Raspberry Pi 3 to MSSQL Server using pyodbc
我目前正在尝试通过 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 吗?
提前致谢。
我正在使用以下基于 Raspian 的 dockerfile to connect my Raspberry Pi 3 to a remote SQL Express database. It should document all steps needed. My Pi is running 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"]
所以基本上是三个步骤:
- 安装 PyODBC 和 tds 的依赖项
- 编辑
/etc/odbcinst.ini
- 安装PyODBC,例如:
pip install pyodbc
在我的代码中,我可以像这样连接到数据库:
connection = pyodbc.connect(driver='{FreeTDS}',
server='111.66.111.66\SQLEXPRESS',
uid='sa', pwd='notmyactualpw')
从 ARM Linux 开发板连接到 MS SQL 服务器的另一种选择是使用 pytds
——我的基于 ARM 的 ASUS Tinker 对我来说就像一个魅力在 Debian 9 上登上 运行。
pytds
与 MS ODBC 驱动程序或 "Free TDS" 相比没有太多依赖性,您只需安装 pip 包就可以了。据我了解,这是因为 TDS 协议实现是在 Python 本身中编写的。
这里有一些细节:https://github.com/denisenkom/pytds
pip install python-tds
我目前正在尝试通过 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 吗?
提前致谢。
我正在使用以下基于 Raspian 的 dockerfile to connect my Raspberry Pi 3 to a remote SQL Express database. It should document all steps needed. My Pi is running 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"]
所以基本上是三个步骤:
- 安装 PyODBC 和 tds 的依赖项
- 编辑
/etc/odbcinst.ini
- 安装PyODBC,例如:
pip install pyodbc
在我的代码中,我可以像这样连接到数据库:
connection = pyodbc.connect(driver='{FreeTDS}',
server='111.66.111.66\SQLEXPRESS',
uid='sa', pwd='notmyactualpw')
从 ARM Linux 开发板连接到 MS SQL 服务器的另一种选择是使用 pytds
——我的基于 ARM 的 ASUS Tinker 对我来说就像一个魅力在 Debian 9 上登上 运行。
pytds
与 MS ODBC 驱动程序或 "Free TDS" 相比没有太多依赖性,您只需安装 pip 包就可以了。据我了解,这是因为 TDS 协议实现是在 Python 本身中编写的。
这里有一些细节:https://github.com/denisenkom/pytds
pip install python-tds