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爬虫模拟登录带验证码网站
Jan 22 Python
pip安装Python库时遇到的问题及解决方法
Nov 23 Python
创建pycharm的自定义python模板方法
May 23 Python
Linux下多个Python版本安装教程
Aug 15 Python
pyside+pyqt实现鼠标右键菜单功能
Dec 08 Python
Python3从零开始搭建一个语音对话机器人的实现
Aug 23 Python
python中必要的名词解释
Nov 20 Python
解决Python import docx出错DLL load failed的问题
Feb 13 Python
pandas和spark dataframe互相转换实例详解
Feb 18 Python
如何使用python代码操作git代码
Feb 29 Python
Windows下Pycharm远程连接虚拟机中Centos下的Python环境(图文教程详解)
Mar 19 Python
Python3爬虫中Selenium的用法详解
Jul 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
有关JSON以及JSON在PHP中的应用
2010/04/09 PHP
解析关于wamp启动是80端口被占用的问题
2013/06/21 PHP
PHP取余函数介绍MOD(x,y)与x%y
2014/05/15 PHP
jquery的$(document).ready()和onload的加载顺序
2010/05/26 Javascript
javascript中用星号表示预录入内容的实现代码
2011/01/08 Javascript
JavaScript SetInterval与setTimeout使用方法详解
2013/11/15 Javascript
Js实现当前点击a标签变色突出显示其他a标签回复原色
2013/11/27 Javascript
JavaScript中对象介绍
2014/12/31 Javascript
Node.js node-schedule定时任务隔多少分钟执行一次的方法
2015/02/10 Javascript
javascript生成不重复的随机数
2015/07/17 Javascript
JavaScript学习小结(7)之JS RegExp
2015/11/29 Javascript
JS实现队列与堆栈的方法
2016/04/21 Javascript
用jQuery的AJax实现异步访问、异步加载
2016/11/02 Javascript
bootstrap 下拉多选框进行多选传值问题代码分析
2017/02/14 Javascript
DataTables添加额外的查询参数和删除columns等无用参数实例
2017/07/04 Javascript
浅析vue中常见循环遍历指令的使用 v-for
2018/04/18 Javascript
基于axios 解决跨域cookie丢失的问题
2018/09/26 Javascript
nodejs中函数的调用实例详解
2018/10/31 NodeJs
利用node.js开发cli的完整步骤
2020/12/29 Javascript
[52:37]完美世界DOTA2联赛循环赛 Forest vs DM BO2第一场 10.29
2020/10/29 DOTA
实例讲解Python中的私有属性
2014/08/21 Python
python实现自动登录人人网并访问最近来访者实例
2014/09/26 Python
tensorflow输出权重值和偏差的方法
2018/02/10 Python
python中报错"json.decoder.JSONDecodeError: Expecting value:"的解决
2019/04/29 Python
华为校园招聘上机笔试题 扑克牌大小(python)
2020/04/22 Python
深入了解Python枚举类型的相关知识
2019/07/09 Python
python从Oracle读取数据生成图表
2020/10/14 Python
Python爬虫之Selenium鼠标事件的实现
2020/12/04 Python
魔声耳机官方网站:Monster是世界第一品牌的高性能耳机
2016/10/26 全球购物
Hotels.com加拿大:领先的在线住宿网站
2018/10/05 全球购物
serialVersionUID具有什么样的特征
2014/02/20 面试题
平面网站制作专科生的自我评价分享
2013/12/11 职场文书
乒乓球比赛通知
2015/04/27 职场文书
OpenCV中resize函数插值算法的实现过程(五种)
2021/06/05 Python
javascript对象3个属性特征
2021/11/17 Javascript
Python中使用tkFileDialog实现文件选择、保存和路径选择
2022/05/20 Python