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写xml文件的操作实例
Oct 05 Python
Python保存MongoDB上的文件到本地的方法
Mar 16 Python
Python urls.py的三种配置写法实例详解
Apr 28 Python
基于Python的XSS测试工具XSStrike使用方法
Jul 29 Python
Python爬虫之正则表达式基本用法实例分析
Aug 08 Python
python实现杨氏矩阵查找
Mar 02 Python
django中账号密码验证登陆功能的实现方法
Jul 15 Python
解决django后台管理界面添加中文内容乱码问题
Nov 15 Python
django自定义模板标签过程解析
Dec 14 Python
在Django中预防CSRF攻击的操作
Mar 13 Python
python如何利用paramiko执行服务器命令
Nov 07 Python
Python常用配置文件ini、json、yaml读写总结
Jul 09 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
Terran历史背景
2020/03/14 星际争霸
php的正则处理函数总结分析
2008/06/20 PHP
使用XDebug调试及单元测试覆盖率分析
2011/01/27 PHP
php压缩多个CSS为一个css的代码并缓存
2011/04/21 PHP
curl不使用文件存取cookie php使用curl获取cookie示例
2014/01/26 PHP
ThinkPHP验证码和分页实例教程
2014/08/22 PHP
php实现的通用图片处理类
2015/03/24 PHP
php curl 上传文件代码实例
2015/04/27 PHP
FireFox中textNode分片的问题
2007/04/10 Javascript
jQuery Selector选择器小结
2010/05/06 Javascript
JS记录用户登录次数实现代码
2014/01/15 Javascript
jquery 3D 标签云示例代码
2014/06/12 Javascript
jQuery实现鼠标滚轮动态改变样式或效果
2015/01/05 Javascript
js实现类似jquery里animate动画效果的方法
2015/04/10 Javascript
jQuery toggle 代替方法
2016/03/22 Javascript
Bootstrap开发实战之响应式轮播图
2016/06/02 Javascript
微信小程序 LOL 英雄介绍开发实例
2016/09/30 Javascript
Textarea输入字数限制实例(兼容iOS&安卓)
2017/07/06 Javascript
webpack学习笔记之优化缓存、合并、懒加载
2017/08/24 Javascript
详解React服务端渲染从入门到精通
2019/03/28 Javascript
vue控制多行文字展开收起的实现示例
2019/10/11 Javascript
js实现左右轮播图
2020/01/09 Javascript
Python+Selenium+PIL+Tesseract自动识别验证码进行一键登录
2017/09/20 Python
用PyInstaller把Python代码打包成单个独立的exe可执行文件
2018/05/26 Python
使用Py2Exe for Python3创建自己的exe程序示例
2018/10/31 Python
HTML里显示pdf、word、xls、ppt的方法示例
2020/04/14 HTML / CSS
美国畅销的跑步机品牌:ProForm
2017/02/06 全球购物
商务英语专业毕业生自荐信
2013/11/05 职场文书
家居设计专业个人自荐信范文
2013/11/26 职场文书
驾驶员岗位职责
2014/01/29 职场文书
房地产项目策划书
2014/02/05 职场文书
父亲的菜园教学反思
2014/02/13 职场文书
2014年教师节活动总结
2014/08/29 职场文书
公司委托书范本5篇
2014/09/20 职场文书
高中班主任评语
2014/12/30 职场文书
《钓鱼的启示》教学反思
2016/02/18 职场文书