armv7l架构Linux10的RevolutionPi用Python连SQL Server遇阻求助
在armv7l架构的Debian 10设备上用Python连接Microsoft SQL Server的解决方案
因为微软官方的ODBC 18驱动不支持armv7l架构,你可以通过以下两种开源方案实现Python与SQL Server的连接:
方案1:FreeTDS + pyodbc
FreeTDS是开源的TDS(Tabular Data Stream)协议驱动,完美兼容armv7l,配合pyodbc可以实现标准ODBC连接:
- 先安装系统依赖:
sudo apt-get update sudo apt-get install -y freetds-dev freetds-bin unixodbc-dev - 安装Python的pyodbc库:
pip install pyodbc - 连接示例代码:
import pyodbc # 替换为你的实际连接信息 server = "远程SQL Server地址" database = "目标数据库名" username = "数据库用户名" password = "数据库密码" tds_version = "8.0" # SQL Server 2016及以上版本建议用8.0,旧版本可调整为7.2 # 构建连接字符串 conn_str = f""" DRIVER={{FreeTDS}}; SERVER={server}; DATABASE={database}; UID={username}; PWD={password}; TDS_Version={tds_version}; """ # 建立连接并测试 try: conn = pyodbc.connect(conn_str) cursor = conn.cursor() cursor.execute("SELECT @@VERSION") row = cursor.fetchone() print("连接成功!SQL Server版本:", row[0]) cursor.close() conn.close() except Exception as e: print("连接失败:", str(e))
方案2:使用pymssql库
pymssql是基于FreeTDS封装的Python专用库,语法更简洁:
- 先安装编译依赖:
sudo apt-get install -y freetds-dev gcc - 安装pymssql:
pip install pymssql - 连接示例代码:
import pymssql # 替换为你的实际连接信息 conn = pymssql.connect( server="远程SQL Server地址", user="数据库用户名", password="数据库密码", database="目标数据库名", tds_version="8.0" ) # 执行测试查询 cursor = conn.cursor() cursor.execute("SELECT @@VERSION") print("连接成功!SQL Server版本:", cursor.fetchone()[0]) cursor.close() conn.close()
关键注意事项
- 确保远程SQL Server的1433端口在防火墙中开放,且你的设备能ping通服务器并访问该端口
- TDS版本需与SQL Server版本匹配:
- SQL Server 2000 → 7.0
- SQL Server 2005-2014 → 7.2
- SQL Server 2016+ → 8.0
内容的提问来源于stack exchange,提问作者Erik
相关产品推荐
相关产品推荐

