pymssql ntext字段调用问题解决方法


Posted in Python onDecember 17, 2008

下面是调用方式:

Example script - pymssql module (DB API 2.0)

Example script - _mssql module (lower level DB access)

不过,在我使用过程中,发现,如果表中包含了ntext字段,就会出错,提示

不能用 DB-Library(如 ISQL)或 ODBC 3.7 或更早版本将 ntext 数据或仅使用Unicode排序规则的 Unicode 数据发送到客户端。

查了一下,发现官方网站有解释:

Q: What means "Unicode data in a Unicode-only collation or ntext data cannot be sent to clients using DB-Library"?

A: If you connect to a SQL Server 2000 SP4 or SQL Server 2005, and if you make a SELECT query on a table that contains a column of type NTEXT, you may encounter the following error:
_mssql.error: SQL Server message 4004, severity 16, state 1, line 1:
Unicode data in a Unicode-only collation or ntext data cannot be sent to clients using DB-Library (such as ISQL) or ODBC version 3.7 or earlier.

It's the SQL Server complaining that it doesn't support pure Unicode via TDS or older versions of ODBC. There's no fix for this error. Microsoft has deprecated DB-Library a long ago, in favor of ODBC, OLE DB, or SQL Native Client. Many new features of SQL 2005 aren't accessible via DB-Library so if you need them, you have to switch away from pymssql or other tools based on TDS and DB-Library.

A workaround is to change the column type to NVARCHAR (it doesn't exhibit this behaviour), or TEXT.

大概意思是,这是因为我们的pymssql使用早期的ODBC函数集来获取数据。后来微软才引入了ntext和nvarchar类型,但Microsoft并没有更新他们的 C-library,所以就没办法支持了。建议:将ntext修改为nvarchar或text.

显然,这不是个好的解决方法,那么是否就没有其他办法了呢?

还好,不用绝望,既然不支持ntext但支持text,那么我们只需要在输出时将ntext转换为text就好了,方法很简单:

SELECT cast ( field_name AS TEXT ) AS field_name

唯一的问题,可能是ntext和text字段所支持的长度不一样,所以也许你还需要设置一下TEXTSIZE

SET TEXTSIZE 65536

当然,你还可以将字段设置的大一点,这个就看你的需要了。

Python 相关文章推荐
Python单例模式实例分析
Jan 14 Python
在Python中关于中文编码问题的处理建议
Apr 08 Python
python实现通过代理服务器访问远程url的方法
Apr 29 Python
Swift中的协议(protocol)学习教程
Jul 08 Python
利用Python破解斗地主残局详解
Jun 30 Python
Python中的浮点数原理与运算分析
Oct 12 Python
浅谈Matplotlib简介和pyplot的简单使用——文本标注和箭头
Jan 09 Python
Python实现根据日期获取当天凌晨时间戳的方法示例
Apr 09 Python
OpenCV 边缘检测
Jul 10 Python
pycharm实现猜数游戏
Dec 07 Python
Django中template for如何使用方法
Jan 31 Python
opencv用VS2013调试时用Image Watch插件查看图片
Jul 26 Python
python 图片验证码代码
Dec 07 #Python
下载糗事百科的内容_python版
Dec 07 #Python
python 参数列表中的self 显式不等于冗余
Dec 01 #Python
Python GAE、Django导出Excel的方法
Nov 24 #Python
Python类的基础入门知识
Nov 24 #Python
Python 连连看连接算法
Nov 22 #Python
python sqlobject(mysql)中文乱码解决方法
Nov 14 #Python
You might like
怎样在php中使用PDF文档功能
2006/10/09 PHP
第十一节--重载
2006/11/16 PHP
Discuz 模板引擎的封装类代码
2008/07/18 PHP
php 随机数的产生、页面跳转、件读写、文件重命名、switch语句
2009/08/07 PHP
PHP使用数组实现队列
2012/02/05 PHP
smarty内部日期函数html_select_date()用法实例分析
2015/07/08 PHP
php表单文件iframe异步上传实例讲解
2017/07/26 PHP
php检查函数必传参数是否存在的实例详解
2017/08/28 PHP
PHP终止脚本运行三种实现方法详解
2020/09/01 PHP
接收键盘指令的脚本
2006/06/26 Javascript
使用upstart把nodejs应用封装为系统服务实例
2014/06/01 NodeJs
javascript实现完美拖拽效果
2015/05/06 Javascript
jQuery实现可以控制图片旋转角度效果(附demo源码下载)
2016/01/27 Javascript
JS获取一个未知DIV高度的方法
2016/08/09 Javascript
JS不完全国际化&本地化手册 之 理论篇
2016/09/27 Javascript
AngularJS基于ui-route实现深层路由的方法【路由嵌套】
2016/12/14 Javascript
如何获取TypeScript的声明文件.d.ts
2018/05/01 Javascript
详解关于vue-area-linkage走过的坑
2018/06/27 Javascript
Python Web框架Flask中使用百度云存储BCS实例
2015/02/08 Python
Python中的日期时间处理详解
2016/11/17 Python
利用Python代码实现数据可视化的5种方法详解
2018/03/25 Python
Numpy 将二维图像矩阵转换为一维向量的方法
2018/06/05 Python
python查看模块,对象的函数方法
2018/10/16 Python
对Python捕获控制台输出流的方法详解
2019/01/07 Python
简单了解django orm中介模型
2019/07/30 Python
Python 余弦相似度与皮尔逊相关系数 计算实例
2019/12/23 Python
python数据库开发之MongoDB安装及Python3操作MongoDB数据库详细方法与实例
2020/03/18 Python
植物选择:Botanic Choice
2017/02/15 全球购物
送货司机岗位职责
2013/12/11 职场文书
热爱祖国的演讲稿
2014/05/04 职场文书
信息管理专业自荐书
2014/06/05 职场文书
考试作弊万能检讨书
2014/10/19 职场文书
2014年导购员工作总结
2014/11/18 职场文书
2014年前台接待工作总结
2014/12/05 职场文书
2015年城管个人工作总结范文
2015/04/20 职场文书
在职证明书模板
2015/06/15 职场文书