linux使用pyodbc和freetds连接sqlserver
Posted qqqmadnull
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux使用pyodbc和freetds连接sqlserver相关的知识,希望对你有一定的参考价值。
安装unixODBC
使用pyodbc需要Linux上安装unixODBC
可使用yum或apt安装unixODBC-devel包
编译安装:http://www.unixodbc.org/download.html
安装成功验证
#odbcinst -j unixODBC 2.3.7 DRIVERS............: /usr/local/etc/odbcinst.ini SYSTEM DATA SOURCES: /usr/local/etc/odbc.ini FILE DATA SOURCES..: /usr/local/etc/ODBCDataSources USER DATA SOURCES..: /root/.odbc.ini SQLULEN Size.......: 8 SQLLEN Size........: 8 SQLSETPOSIROW Size.: 8
安装连接驱动
unixodbc中没有自带连接sqlserver的驱动,freetds提供了相关的连接驱动,也可以通过微软提供的脚本来安装,这里选择freetds来提供连接驱动
安装freetds
https://github.com/FreeTDS/freetds
git或下载项目到文件夹中
示例使用freetds的0.91版本https://github.com/FreeTDS/freetds/releases/tag/branch-0_91
**安装前确保安装了如下工具:automake,autoconf,autogen,gettext,libtool,make,gcc,perl
解压后进入目录运行
./autogen.sh
make
make install
上述安装针对github上的源码安装,下载其他包时有的已经生成了configure文件只需运行./configure后make,make install。
默认安装路径为/user/local/etc
测试:编辑freetds.conf在其中加入sqlserver的连接信息文件一般在/user/local/etc中
[server] host = 192.168.6.6 port = 1433 tds version = 7.0 client chaeset = UTF-8
其中的tds version可查看文件中的示例选择,错误的值可能导致连接失败 Unexpected EOF from the server
使用tsql测试连接
#tsql -S server -U user -P password locale is "en_US.UTF-8" locale charset is "UTF-8" using default charset "UTF-8" 1>
安装pyodbc
https://pypi.org/project/pyodbc/
pip install pyodbc或者下载包后进入主目录python setup.py install
编辑/etc/odbcinst.conf文件,该文件也可能在/usr/local/etc中
添加freetds连接库
在文件中加入
[SQL Server]
Driver = /usr/local/lib/libtdsodbc.so
其中driver为freetds的提供的驱动文件,SQL Server为连接字符串使用的驱动名
测试:
import pyodbc DBCONNECTSTR = ‘DRIVER={SQL Server};SERVER=192.168.6.6;port=1433;DATABASE=test;UID=user;PWD=password;TDS_Version=7.0;‘ conn=pyodbc.connect(DBCONNECTSTR) conn.close()
注意TDS_Version的值与/usr/local/etc/freetds.conf中的连接示例一致
更多python连接sqlserver方法:
https://wiki.python.org/moin/SQL%20Server
https://www.cnblogs.com/AppleZhang/p/7878971.html
以上是关于linux使用pyodbc和freetds连接sqlserver的主要内容,如果未能解决你的问题,请参考以下文章
linux上的Django-pyodbc SQL Server/freetds服务器连接问题
SqlAlchemy 等效于使用 FreeTDS 的 pyodbc 连接字符串
linux使用freetds 连接连远程服务器sqlservser2012