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数据结构之Array用法实例
Oct 09 Python
Python标准库os.path包、glob包使用实例
Nov 25 Python
python实现的守护进程(Daemon)用法实例
Jun 02 Python
Python简单检测文本类型的2种方法【基于文件头及cchardet库】
Sep 18 Python
Python 调用Java实例详解
Jun 02 Python
利用pandas读取中文数据集的方法
Jul 25 Python
对Tensorflow中的变量初始化函数详解
Jul 27 Python
在python中使用with打开多个文件的方法
Jan 07 Python
用python 实现在不确定行数情况下多行输入方法
Jan 28 Python
Python字符串逆序的实现方法【一题多解】
Feb 18 Python
python3 logging日志封装实例
Apr 08 Python
python flask框架快速入门
May 14 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基本函数汇总
2015/07/09 PHP
PHP6连接SQLServer2005的三部曲
2016/04/15 PHP
windows系统php环境安装swoole具体步骤
2021/03/04 PHP
利用JS来控制键盘的上下左右键(示例代码)
2013/12/14 Javascript
js利用事件的阻止冒泡实现点击空白模态框的隐藏
2014/01/24 Javascript
js创建表单元素并使用submit进行提交
2014/08/14 Javascript
jQuery中data()方法用法实例
2014/12/27 Javascript
jQuery实现的支持IE的html滑动条
2015/03/16 Javascript
JavaScript实现文本框中默认显示背景图片在获得焦点后消失的方法
2015/07/01 Javascript
Javascript 5种方法实现过滤删除前后所有空格
2016/06/22 Javascript
angularJS Provider、factory、service详解及实例代码
2016/09/21 Javascript
用vue和node写的简易购物车实现
2017/04/25 Javascript
微信小程序 功能函数小结(手机号验证*、密码验证*、获取验证码*)
2017/12/08 Javascript
JS实现的文件拖拽上传功能示例
2018/05/21 Javascript
如何让node运行es6模块文件及其原理详解
2018/12/11 Javascript
vue路由--网站导航功能详解
2019/03/29 Javascript
微信小程序实现滚动Tab选项卡
2020/11/16 Javascript
在Python中使用next()方法操作文件的教程
2015/05/24 Python
Python实现屏幕截图的代码及函数详解
2016/10/01 Python
pandas DataFrame数据转为list的方法
2018/04/11 Python
Python3的介绍、安装和命令行的认识(推荐)
2018/10/20 Python
使用Python+wxpy 找出微信里把你删除的好友实例
2019/02/21 Python
python3.6根据m3u8下载mp4视频
2019/06/17 Python
TensorFlow基本的常量、变量和运算操作详解
2020/02/03 Python
使用python-pptx包批量修改ppt格式的实现
2020/02/14 Python
浅析Django 接收所有文件,前端展示文件(包括视频,文件,图片)ajax请求
2020/03/09 Python
澳大利亚首屈一指的在线购物目的地:Kogan.com
2017/02/02 全球购物
工厂保洁员岗位职责
2013/12/04 职场文书
交通安全教育制度
2014/02/02 职场文书
青年文明号创建承诺
2014/03/31 职场文书
建设投标担保书
2014/05/13 职场文书
乡镇群众路线整改落实情况汇报
2014/10/28 职场文书
辞职信怎么写
2015/02/27 职场文书
老乡会致辞
2015/07/28 职场文书
python面向对象版学生信息管理系统
2021/06/24 Python
Redis高并发防止秒杀超卖实战源码解决方案
2021/11/01 Redis