今天需要写一个定时任务,简单尝试用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 "<pyshell#1>", line 1, in <module>
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 pymssql
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
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