pymssql 2.1.4 ImportError: DLL load failed

最近有个工作需要用python读写sqlserver数据库,就用到了pymssql库。结果在离线的生产环境部署脚本的时候,发现报错:

ImportError: DLL load failed: The specified module could not be found

查了下发现pymssql 2.1.4与2.1.2版本不再使用静态链接的方式包含freetds库,而是采用动态链接方式,需要另外下载并安装freetds。尤其是使用windows的whl离线安装包的时候。2.1.3与2.1.1版本则静态包含freetds。所以装回这两个版本即可。

参考:

http://www.pymssql.org/en/stable/freetds.html#windows

https://github.com/pymssql/pymssql/issues/399#issuecomment-185885836

 

另外,在使用的时候,发现一个问题。2.1.1版本的Cursor.execute(operation, params)函数的第二个参数不支持字典,只支持元组作为sql语句的参数。即:

cursor.execute("insert into <code>{{EJS9}}</code> (<code>{{EJS10}}</code>, <code>{{EJS11}}</code>) values (%s, %d)", 
        ('funway', 30))
cursor.execute("insert into <code>{{EJS12}}</code> (<code>{{EJS13}}</code>, <code>{{EJS14}}</code>) values (%(name)s, %(age)d)", 
        {'name':'funway', 'age': 30})

 

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top