作者:wugege | 来源:互联网 | 2023-09-11 09:24
主要是想用树莓派操作sqlserver,这样设备的iot信号采集的时候就可以直接传送到数据库,成本会稍微低一点,不用另外再配置电脑与server连接,对于一些低成本设备的信号采集很好用。
先用ubuntu测试一下吧:
系统:ubuntu20.04
在unbuntu环境下操作sqlserver没有在windows方便,但好在资源也算丰富,总结起来只要两步就可以了:
- 首先配置freetds和unixodbc。
- 再配置pyodbc,这步自己折腾的,网上没有现成的。
第一步:配置freetds和unixodbc的时候,用到两个包:freetds和unixodbc
可参考这一篇:
http://blog.sina.com.cn/s/blog_a26e6d690102wxzf.html
不过版本应该是旧的,我这里的版本分别是:
freetds-1.1.23.tar.gz和unixODBC-2.3.7.tar.gz。
安装好时候,一定用进行测试,保证在终端可以访问数据库。
第二步:一定要保证第一步在终端可以连接数据库。
安装pyodbc可参考:
https://www.csdn.net/gather_2b/MtTaUg4sNzkwMC1ibG9n.html
不过看看就好,我全照着来还是有点问题,你们可以试试能否成功。
我呢,只要用到以下命令安装pyodbc
sudo apt install python3-pip
sudo apt install unixodbc-dev
sudo pip3 install pyodbc
安装完毕后,就可以着手写代码了,有个地方是重点:Driver那里,这个一定要注意,网上的驱动都不大对,我的灵感来自这里:
https://github.com/mkleehammer/pyodbc/wiki/Connecting-to-Hive-from-Ubuntu-Debian
DRIVER={/usr/local/freetds/lib/libtdsodbc.so}这是最重要的
附上代码和结果:
python代码
# coding=utf-8
import pyodbcconn = pyodbc.connect(r'DRIVER={/usr/local/freetds/lib/libtdsodbc.so};SERVER=192.168.1.35,1433;DATABASE=MES;UID=sa;PWD=123')
cursor = conn.cursor()cursor.execute("select * from Table_for_PLC") #调用游标指针的execute方法执行sql语句
row = cursor.fetchone() #sql语句执行结果的获取,如果需要一次获取多条记录,可以使用cursor.fetchall()方法
if row:print (row)conn.commit()
conn.close()