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图像灰度变换及图像数组操作
Jan 27 Python
Python中使用platform模块获取系统信息的用法教程
Jul 08 Python
python生成ppt的方法
Jun 07 Python
python 字符串常用函数详解
Sep 11 Python
使用Python开发个京东上抢口罩的小实例(仅作技术研究学习使用)
Mar 10 Python
python 穷举指定长度的密码例子
Apr 02 Python
python如何实现DES加密
Sep 21 Python
python matplotlib绘制三维图的示例
Sep 24 Python
Django-Scrapy生成后端json接口的方法示例
Oct 06 Python
10个python爬虫入门基础代码实例 + 1个简单的python爬虫完整实例
Dec 16 Python
Django实现WebSocket在线聊天室功能(channels库)
Sep 25 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基础知识:类与对象(4) 范围解析操作符(::)
2006/12/13 PHP
PHP-MySQL教程归纳总结
2008/06/07 PHP
php addslashes 利用递归实现使用反斜线引用字符串
2013/08/05 PHP
php保存二进制原始数据为图片的程序代码
2014/10/14 PHP
Yii2分页的使用及其扩展方法详解
2016/05/23 PHP
基于laravel belongsTo使用详解
2019/10/18 PHP
[原创]js与自动伸缩图片 自动缩小图片的多浏览器兼容的方法总结
2007/03/12 Javascript
dwr spring的集成实现代码
2009/03/22 Javascript
php上传图片并给图片打上透明水印的代码
2010/06/07 Javascript
javascript内存管理详细解析
2013/11/11 Javascript
jQuery 的全选(全非选)即取得被选中的值使用介绍
2013/11/12 Javascript
javascript文件中引用依赖的js文件的方法
2014/03/17 Javascript
iframe中子父类窗口调用JS的方法及注意事项
2015/08/25 Javascript
JavaScript实现获取某个元素相邻兄弟节点的prev与next方法
2016/01/25 Javascript
JS简单实现String转Date的方法
2016/03/02 Javascript
yarn与npm的命令行小结
2016/10/20 Javascript
JS加密插件CryptoJS实现的Base64加密示例
2020/08/16 Javascript
浅谈layui 绑定form submit提交表单的注意事项
2019/10/25 Javascript
JavaScript计算出两个数的差值
2020/03/19 Javascript
js+css3实现简单时钟特效
2020/09/13 Javascript
深入解析Python中的线程同步方法
2016/06/14 Python
对python判断ip是否可达的实例详解
2019/01/31 Python
在VS2017中用C#调用python脚本的实现
2019/07/31 Python
CSS3使用transition属性实现过渡效果
2018/04/18 HTML / CSS
世界上最大的街头服饰网站:Karmaloop
2017/02/04 全球购物
存储过程和sql语句的优缺点
2014/07/02 面试题
Servlet面试题库
2015/07/18 面试题
采购主管岗位职责
2014/02/01 职场文书
艺术学院毕业生自我评价
2014/03/02 职场文书
环境工程专业自荐信范文
2014/06/24 职场文书
2014法院四风问题对照检查材料思想汇报
2014/10/04 职场文书
综治维稳工作汇报
2014/10/27 职场文书
实习单位指导教师评语
2014/12/30 职场文书
律师函格式范本
2015/05/27 职场文书
隐形的翅膀观后感
2015/06/10 职场文书
python元组打包和解包过程详解
2021/08/02 Python