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 06 Python
解决python3 urllib中urlopen报错的问题
Mar 25 Python
基于python OpenCV实现动态人脸检测
May 25 Python
让代码变得更易维护的7个Python库
Oct 09 Python
python itchat给指定联系人发消息的方法
Jun 11 Python
Python 使用多属性来进行排序
Sep 01 Python
Python 异常的捕获、异常的传递与主动抛出异常操作示例
Sep 23 Python
Django框架模板用法入门教程
Nov 04 Python
Python使用Turtle库绘制一棵西兰花
Nov 23 Python
python 爬虫如何实现百度翻译
Nov 16 Python
python mongo 向数据中的数组类型新增数据操作
Dec 05 Python
selenium携带cookies模拟登陆CSDN的实现
Jan 19 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旋转图片90度的方法
2013/11/07 PHP
ThinkPHP之M方法实例详解
2014/06/20 PHP
PHP实现基于文本的摩斯电码生成器
2016/01/11 PHP
深入解析Laravel5.5中的包自动发现Package Auto Discovery
2017/09/13 PHP
laravel接管Dingo-api和默认的错误处理方式
2019/10/25 PHP
OfflineSave离线保存代码再次发布使用说明
2007/05/23 Javascript
Seajs的学习笔记
2014/03/04 Javascript
JavaScript常用基础知识强化学习
2015/12/09 Javascript
快速学习AngularJs HTTP响应拦截器
2015/12/31 Javascript
微信小程序 wx:key详细介绍
2016/10/28 Javascript
解析预加载显示图片艺术
2016/12/05 Javascript
boostrapTable的refresh和refreshOptions区别浅析
2017/01/22 Javascript
简单的vue-resourse获取json并应用到模板示例
2017/02/10 Javascript
ES6字符串模板,剩余参数,默认参数功能与用法示例
2017/04/06 Javascript
js实现无缝轮播图特效
2020/05/09 Javascript
[01:34]DAC2018主赛事第四日五佳镜头 Gh巨牙海民助Miracle-死里逃生
2018/04/07 DOTA
合并Excel工作薄中成绩表的VBA代码,非常适合教育一线的朋友
2009/04/09 Python
python连接MySQL、MongoDB、Redis、memcache等数据库的方法
2013/11/15 Python
Python中__name__的使用实例
2015/04/14 Python
深入解析Python编程中JSON模块的使用
2015/10/15 Python
python opencv对图像进行旋转且不裁剪图片的实现方法
2019/07/09 Python
python 实现批量替换文本中的某部分内容
2019/12/13 Python
Python使用Turtle模块绘制国旗的方法示例
2021/02/28 Python
CSS实现定位元素居中的方法
2015/06/23 HTML / CSS
英国著名的化妆品折扣网站:Allbeauty.com
2016/07/21 全球购物
安全员岗位职责
2013/11/11 职场文书
贯彻学习两会心得体会范文
2014/03/17 职场文书
公司承诺书怎么写
2014/05/24 职场文书
销售行政专员岗位职责
2014/06/10 职场文书
努力工作保证书
2015/02/28 职场文书
鲁滨孙漂流记读书笔记
2015/06/30 职场文书
Go语言空白表示符_的实例用法
2021/07/04 Golang
中国十大神话动漫电影排行榜 哪吒登顶 白蛇缘起排第七
2022/03/21 国漫
Java实现经典游戏泡泡堂的示例代码
2022/04/04 Java/Android
i5-10400f处理相当于i7多少水平
2022/04/19 数码科技
MySQL的表级锁,行级锁,排它锁和共享锁
2022/07/15 MySQL