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来提供连接驱动

微软驱动详细https://docs.microsoft.com/zh-cn/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-2017

安装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

 

posted @ 2018-08-28 13:15  QQQnull  阅读(985)  评论(0编辑  收藏  举报