在非Windows
环境下去访问,连接 MSSQL 数据,本身就是件苦差事来的。自写Python
程序以来在ORM
方面都是使用pyxxx
的模块,果不其然连接 MSSQL 也有个模块叫pymssql
,只是实际使用中并不是特别的顺利。如笔者所处的环境就是如此,开发环境为OSX 10.11
,发布环境为CentOS 6.4
,按官方的安装步骤实行下来,Linux 环境是OK
的,只是 Mac 环境下安装失败,错误的堆栈信息如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| Running setup.py install for pymssql ... error
Complete output from command /Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python -u -c "import setuptools, tokenize;__file__='/private/tmp/pip-build-KA5ksi/pymssql/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-A3wRBy-record/install-record.txt --single-version-externally-managed --compile:
setup.py: platform.system() => 'Darwin'
setup.py: platform.architecture() => ('64bit', '')
setup.py: platform.libc_ver() => ('', '')
setup.py: Detected Darwin/Mac OS X.
You can install FreeTDS with Homebrew or MacPorts, or by downloading
and compiling it yourself.
Homebrew (http://brew.sh/)
--------------------------
brew install freetds
MacPorts (http://www.macports.org/)
-----------------------------------
sudo port install freetds
......
/usr/bin/clang -fno-strict-aliasing -fno-common -dynamic -arch i386 -arch x86_64 -g -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/usr/local/include -I/opt/local/include -I/opt/local/include/freetds -I/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c _mssql.c -o build/temp.macosx-10.6-intel-2.7/_mssql.o -DMSDBLIB
_mssql.c:18924:15: error: use of undeclared identifier 'DBVERSION_80'
__pyx_r = DBVERSION_80;
|
在安装pymssql
之前有个关于的组件为FreeTDS
,所遇到的问题也就是出现在此组件上面。 在Linux
和OSX
环境下的安装命令分别如下:
1
2
3
4
5
| # Linux
yum install freetds-devel.x86_64
# Mac
brew install freetds
|
在Mac
环境中需要注意freetds
的版本引起的问题,可以正常使用的版本为0.91
,修正后的安装命令如下:
1
2
3
| brew uninstall --force freetds
brew install freetds@0.91
brew link --force freetds@0.91
|
另外还得需要安装一个Python模块,安装命令如下:
上述环境准备就绪后,便可以顺利的安装pymssql
模块,执行如下安装命令:
写个简单的测试代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| #!/usr/bin/env python
# -*- coding: utf_8 -*-
# coding=utf8
import pymssql
server = "192.168.1.2"
user = "sa"
password = "123456"
conn = pymssql.connect(server, user, password, database="platform")
cursor = conn.cursor()
cursor.execute("SELECT * FROM Table")
row = cursor.fetchone()
while row:
row = cursor.fetchone()
print row
conn.close()
|
OK,全部搞定,继续码代码去。
参考如下: