ubuntu下通过FreeTDS访问SqlServer(python示例)

1、安装unixODBC

unixODBC是用于非Windows平台下的开放式数据库连接工具,可从官网下载:http://www.unixodbc.org/ 。unixODBC提供了对ODBC的支持,但它只是一个ODBC管理器,要连接实际的数据库还得提供对应数据库的ODBC驱动。

下载之后根据以下步骤安装:

tar -xvf unixODBC-2.3.7.tar.gz
cd unixODBC-2.3.7
./configure --prefix=/usr/local/unixODBC  #--prefix选项用于指定安装目录,不指定的话默认安装在/usr/local
make
sudo make install

使用以下命令测试unixODBC是否安装成功

odbcinst -j

如果成功显示以下信息说明安装完成

unixODBC 2.3.7
DRIVERS............: /etc/odbcinst.ini  
SYSTEM DATA SOURCES: /etc/odbc.ini  
FILE DATA SOURCES..: /etc/ODBCDataSources  
USER DATA SOURCES..: /home/robot/.odbc.ini  
SQLULEN Size.......: 8  
SQLLEN Size........: 8  
SQLSETPOSIROW Size.: 8

2、安装FreeTDS(主要是为了安装ODBC驱动)

FreeTDS是一组用于在unix和Linux下访问SqlServer和Sybase的程序库,提供ODBC驱动,可从官网下载: http://www.freetds.org/software.html 。(也可以直接安装微软提供的ODBC驱动程序:https://docs.microsoft.com/zh-cn/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-2017 )

下载之后根据以下步骤安装:

tar -xvf freetds-patched.tar.gz
cd freetds-1.00.111
./configure --prefix=/usr/local/freetds --with-tdsver=7.0 --enable-msdblib   #--with-tdsver选项用于指定TDS协议的版本,--enable-msdblib选项表示启用微软数据库函数库
make
sudo make install

安装完成后可以使用以下命令查看安装信息

tsql -C

如果出现以下信息说明安装完成

Version: freetds v1.00.111
freetds.conf directory: /usr/local/etc 
MS db-lib source conpatibility: yes
Sybase binary compatibility: no
Thread safety: yes
iconv library: yes
TDS version: 7.0
iODBC: no
unixobc: yes
SSPI "tursted" logins: no
Kerberos: no
OpenSSL: yes
GnuTLS: no
MARS: no

也可以使用tsql命令在终端中连接数据库

tsql -H 127.0.0.1 -p 1433 -U sa -P Robot123456

其中,-H 表示主机ip地址, -p 表示端口号,-U 表示用户名,-P 表示密码。如果出现以下信息表示连接成功

locale is "zh_CN.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
1>

3、安装pyodbc

pyodbc是用于调用ODBC数据库接口而封装的python模块,利用python编程连接数据库时需要导入该模块。可以直接通过命令行安装:

pip install pyodbc

4、python连接数据库

可以通过以下两种方式进行连接:

#通过指定Driver连接
connection = pyodbc.connect('Driver={ODBC Driver 13 for SQL Server};Server=XXX;database=XXX;uid=XXX;pwd=XXX')
#通过DSN(Data Source Name)连接(需要先配置)
connection = pyodbc.connect('DSN=MSSQL-ABC;Server=XXX;database=XXX;uid=XXX;pwd=XXX')

这里我们选择第一种进行测试,打开python,输入以下命令

import pyodbc  #导入pyodbc模块
DBCONNECTSTR='DRIVER={SQL Server};SERVER=127.0.0.1;port=1433;DATABASE=TestDB;UID=sa;PWD=Robot123456;TDS_Version=7.0;'   #登录信息字符串,其中TDS_Version与安装freetds时选择的版本号相同
conn=pyodbc.connect(DBCONNECTSTR)
conn.close()

运行不报错说明可成功连接。

 

你可能感兴趣的:(Linux)