今天需要写一个定时任务,简单尝试用pymssql连接了一下。
工作环境:win7 + py2.7 + 远程 SQL Server 2008
1.安装pymssql
直接安装pymssql-2.0.0b1.win32-py2.7.exe,然后import pymssql,没有问题。
2.连接数据库,出现如下错误
>>> conn = pymssql.connect(host="192.168.0.100",user="sa",password="pwd",database="production")Traceback (most recent call last): File "", line 1, in conn = pymssql.connect(host="192.168.0.100",user="sa",password="pwd",database="production") File "pymssql.pyx", line 549, in pymssql.connect (pymssql.c:7110)OperationalError: (20009, 'Net-Lib error during Unknown error')
不懂,搜一下看看大牛们怎么说。大牛说不知道。
只好自己折腾,经过1个小时多的研究,原来指定了编码就好了……
端口也换掉,直接创建一个游标……
>>> conn = pymssql.connect(server="192.168.0.100",port="2433",user="sa",password="pwd", database="production",charset="UTF-8")>>> cursor = conn.cursor()
3. 查一下玩玩,可以开始写脚本了
>>> cursor.execute("select count(*) from applyForm")>>> cursor.fetchone()[0]2937>>> conn.close()
4. 最近升级了pymssql 2.1.2,结果坑了。。。
>>> import pymssqlTraceback (most recent call last): File "", line 1, in ImportError: DLL load failed: 找不到指定的模块。
在网上查了一个多小时,终于发现了原因
pymlssql 2.1.1 pymssql 2.1.2+------------------------------------------+ +-------------------------------------------+| | | || pymssql | | pymssql || | | || | | || | +-------> | || | +-------------------------------------------+| +-----------------------------------+ || | freetds (statically linked) | | +-------------------------------------------+| | | | | || | | | | freetds (in DLL form) || +-----------------------------------+ | | |+------------------------------------------+ +-------------------------------------------+ +-------------------------------------------+ | | | OpenSSL (in DLL form) | | | +-------------------------------------------+
需要单独安装 FreeTDS ,尼玛,这么大的变化,版本号不舍得变一变啊!!!!还是乖乖用回旧版本吧。
原文:https://github.com/pymssql/pymssql/issues/399