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中的函数用法入门教程
Sep 02 Python
Python中logging模块的用法实例
Sep 29 Python
教你用Type Hint提高Python程序开发效率
Aug 08 Python
python爬虫之xpath的基本使用详解
Apr 18 Python
Python列表(List)知识点总结
Feb 18 Python
python删除列表元素的三种方法(remove,pop,del)
Jul 22 Python
django 基于中间件实现限制ip频繁访问过程详解
Jul 30 Python
django框架F&Q 聚合与分组操作示例
Dec 12 Python
numpy矩阵数值太多不能全部显示的解决
May 14 Python
Python pandas 列转行操作详解(类似hive中explode方法)
May 18 Python
Python getattr()函数使用方法代码实例
Aug 10 Python
python实现启动一个外部程序,并且不阻塞当前进程
Dec 05 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超级全局变量
2010/01/26 PHP
ThinkPHP实现图片上传操作的方法详解
2017/05/08 PHP
thinkphp5框架扩展redis类方法示例
2019/05/06 PHP
firefox浏览器下javascript 拖动层效果与原理分析代码
2007/12/04 Javascript
js 对联广告、漂浮广告封装类(IE,FF,Opera,Safari,Chrome
2009/11/26 Javascript
iframe自适应宽度、高度 ie6 7 8,firefox 3.86下测试通过
2010/07/29 Javascript
jquery选择器(常用选择器说明)
2010/09/28 Javascript
JS判断页面加载状态以及添加遮罩和缓冲动画的代码
2012/10/11 Javascript
js获取网页可见区域、正文以及屏幕分辨率的高度
2014/05/15 Javascript
jQuery 判断是否包含在数组中Array[]的方法
2016/08/03 Javascript
js 获取元素所有兄弟节点的实现方法
2016/09/06 Javascript
JS正则RegExp.test()使用注意事项(不具有重复性)
2016/12/28 Javascript
关于vue.js组件数据流的问题
2017/07/26 Javascript
vue实现全选和反选功能
2017/08/31 Javascript
Vue隐藏显示、只读实例代码
2018/07/18 Javascript
对Layer弹窗使用及返回数据接收的实例详解
2019/09/26 Javascript
layui: layer.open加载窗体时出现遮罩层的解决方法
2019/09/26 Javascript
vue+element表格导出为Excel文件
2019/09/26 Javascript
Python之PyUnit单元测试实例
2014/10/11 Python
python中日期和时间格式化输出的方法小结
2015/03/19 Python
CSS3教程(9):设置RGB颜色
2009/04/02 HTML / CSS
CSS3动画animation实现云彩向左滚动
2014/05/09 HTML / CSS
css3遮罩层镂空效果的多种实现方法
2020/05/11 HTML / CSS
英国最大的汽车交易网站:Auto Trader UK
2016/09/23 全球购物
如何删除一个表里面的重复行
2013/07/13 面试题
深圳茁壮笔试题
2015/05/28 面试题
在求职信中如何凸显个人优势
2013/10/30 职场文书
2014党委书记四风对照检查材料思想汇报
2014/09/21 职场文书
股权转让协议书
2014/12/07 职场文书
525心理健康活动总结
2015/05/08 职场文书
旅游投诉信范文
2015/07/02 职场文书
幼儿园奖惩制度范本
2015/08/05 职场文书
html5实现点击弹出图片功能
2021/07/16 HTML / CSS
php png失真的原因及解决办法
2021/11/17 PHP
windows11怎么查看自己安装的版本号? win11版本号的查看方法
2021/11/21 数码科技
关于CSS自定义属性与前端页面的主题切换问题
2022/03/21 HTML / CSS