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中的MongoDB基本操作:连接、查询实例
Feb 13 Python
使用Python的Twisted框架构建非阻塞下载程序的实例教程
May 25 Python
Python中将字典转换为列表的方法
Sep 21 Python
深入理解NumPy简明教程---数组1
Dec 17 Python
Python输出带颜色的字符串实例
Oct 10 Python
python+matplotlib演示电偶极子实例代码
Jan 12 Python
python opencv读mp4视频的实例
Dec 07 Python
Python查找文件中包含中文的行方法
Dec 19 Python
python脚本当作Linux中的服务启动实现方法
Jun 28 Python
使用Python实现跳一跳自动跳跃功能
Jul 10 Python
wxPython色环电阻计算器
Nov 18 Python
在pytorch中对非叶节点的变量计算梯度实例
Jan 10 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自动判断字符集并转码的详解
2013/06/26 PHP
ThinkPHP水印功能实现修复PNG透明水印并增加JPEG图片质量可调整
2014/11/05 PHP
Symfony生成二维码的方法
2016/02/04 PHP
PHP 中常量的知识整理
2017/04/14 PHP
许愿墙中用到的函数
2006/10/07 Javascript
用JQuery在网页中实现分隔条功能的代码
2012/08/09 Javascript
nodejs分页类代码分享
2014/06/17 NodeJs
js中confirm实现执行操作前弹出确认框的方法
2014/11/01 Javascript
PHP配置文件php.ini中打开错误报告的设置方法
2015/01/09 PHP
总结JavaScript中布尔操作符||与&&的使用技巧
2015/11/17 Javascript
JavaScript的React框架中的JSX语法学习入门教程
2016/03/05 Javascript
BootStrap 图片样式、辅助类样式和CSS组件的实例详解
2017/01/20 Javascript
jquery代码规范让代码越来越好看
2017/02/03 Javascript
jQuery 判断元素整理汇总
2017/02/28 Javascript
ES6中Symbol类型用法实例详解
2017/04/06 Javascript
Vue 2.0中生命周期与钩子函数的一些理解
2017/05/09 Javascript
Angular2使用Angular-CLI快速搭建工程(二)
2017/05/21 Javascript
jQuery实现常见的隐藏与展示列表效果示例
2018/06/04 jQuery
实例详解Vue项目使用eslint + prettier规范代码风格
2018/08/20 Javascript
Vue使用CDN引用项目组件,减少项目体积的步骤
2020/10/30 Javascript
python字符串连接的N种方式总结
2014/09/17 Python
Python标准库之随机数 (math包、random包)介绍
2014/11/25 Python
Python本地与全局命名空间用法实例
2015/06/16 Python
Python中list列表的一些进阶使用方法介绍
2015/08/15 Python
详解Python 序列化Serialize 和 反序列化Deserialize
2017/08/20 Python
Python3.7+tkinter实现查询界面功能
2019/12/24 Python
解决pip install psycopg2出错问题
2020/07/09 Python
Windows下pycharm安装第三方库失败(通用解决方案)
2020/09/17 Python
微软香港官网及网上商店:Microsoft HK
2016/09/01 全球购物
假日旅行社实习自我鉴定
2013/09/24 职场文书
亲戚结婚的请假条
2014/02/11 职场文书
中专生毕业个人鉴定
2014/02/26 职场文书
红领巾广播站广播稿
2014/10/19 职场文书
2015年公司中秋节致辞
2015/07/31 职场文书
2016年安全月活动总结
2016/04/06 职场文书
Vue Mint UI mt-swipe的使用方式
2022/06/05 Vue.js