以前用Python訪問MSSQL用一個叫pymssql的模組,只在windows下用過,挺好用的。具體說明見這裡
http://pymssql.sourceforge.net/。
現在需要在Linux下用Python訪問MSSQL,安裝了FreeTDS(http://www.freetds.org/)。由於這幾天pymssql的原始碼無法下載,Debian上也沒有這個包下載,只好用FreeTDS文檔中提到的Python MSSQL module(http://object-craft.com.au/projects/mssql/examples.html),下載下來按照文檔執行 python setup.py install,
編譯錯誤,出現下邊的提示:
running install
running build
running build_py
running build_ext
building 'mssqldb' extension
gcc -pthread -fno-strict-aliasing -DNDEBUG -g -O3 -Wall -Wstrict-prototypes -fPIC -DHAVE_FREETDS -DHAVE_DBALTBIND -DHAVE_DBCLROPT -DHAVE_DBCURCMD -DHAVE_DBCURROW -DHAVE_DBISOPT -DHAVE_DBNUMCOMPUTE -DHAVE_DBRETTYPE -I/usr/include -I/home/hjue/Python-2.4.2/Include -I/home/hjue/Python-2.4.2 -c databuf.c -o build/temp.linux-i686-2.4/databuf.o
In file included from databuf.c:9:
mssqldb.h:59: error: syntax error at '##' token
mssqldb.h:59: error: syntax error at '##' token
mssqldb.h:59: error: syntax error at '##' token
mssqldb.h:68: error: `DBMAXCHAR' undeclared here (not in a function)
mssqldb.h:71: error: syntax error at '##' token
mssqldb.h:71: error: syntax error at '##' token
mssqldb.h:71: error: syntax error at '##' token
error: command 'gcc' failed with exit status 1
在Google上查了一下,主要是因為關於MSSQL的一些變數沒有定義。
在mssqldb.h 中加入下邊代碼,重新運行python setup.py install 就OK了
# define DBMAXCHAR 256
#ifdef HAVE_FREETDS
typedef unsigned char DBBIT;
#define PRNUMERIC MAXPRECISION
#define DB_MAX_PREC MAXPRECISION
#define DB_MAX_SCALE MAXPRECISION
typedef struct dbvarychar
{
DBSMALLINT len;
DBCHAR str[DBMAXCHAR];
} DBVARYCHAR;
#endif