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验证码识别处理实例
Dec 28 Python
Python中 Lambda表达式全面解析
Nov 28 Python
python实现折半查找和归并排序算法
Apr 14 Python
python如何使用正则表达式的前向、后向搜索及前向搜索否定模式详解
Nov 08 Python
python将字典内容存入mysql实例代码
Jan 18 Python
Python实现简易版的Web服务器(推荐)
Jan 29 Python
python操作excel的包(openpyxl、xlsxwriter)
Jun 11 Python
python存储16bit和32bit图像的实例
Dec 05 Python
Python3 无重复字符的最长子串的实现
Oct 08 Python
Python调用钉钉自定义机器人的实现
Jan 03 Python
利用python实现逐步回归
Feb 24 Python
python3中calendar返回某一时间点实例讲解
Nov 18 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/08/10 PHP
Javascript创建Silverlight Plugin以及自定义nonSilverlight和lowSilverlight样式
2010/06/28 Javascript
一个背景云变换js特效 鼠标移动背景云变化
2012/12/28 Javascript
readonly和disabled属性的区别
2015/07/26 Javascript
jquery validate表单验证的基本用法入门
2016/01/18 Javascript
JavaScript学习笔记整理_setTimeout的应用
2016/09/19 Javascript
jQuery如何解决IE输入框不能输入的问题
2016/10/08 Javascript
Vue中的数据监听和数据交互案例解析
2017/07/12 Javascript
jQuery读取本地的json文件(实例讲解)
2017/10/31 jQuery
layui 监听表格复选框选中值的方法
2018/08/15 Javascript
ES6 迭代器与可迭代对象的实现
2019/02/11 Javascript
vue keep-alive列表页缓存 详情页返回上一页不刷新,定位到之前位置
2019/11/26 Javascript
javascript设计模式 ? 状态模式原理与用法实例分析
2020/04/22 Javascript
js实现磁性吸附的示例
2020/10/26 Javascript
vue 中的动态传参和query传参操作
2020/11/09 Javascript
vuex页面刷新导致数据丢失的解决方案
2020/12/10 Vue.js
python中from module import * 的一个坑
2014/07/20 Python
Swift中的协议(protocol)学习教程
2016/07/08 Python
Python单例模式实例详解
2017/03/01 Python
python 打印直角三角形,等边三角形,菱形,正方形的代码
2017/11/21 Python
python3实现zabbix告警推送钉钉的示例
2019/02/20 Python
selenium+python自动化测试环境搭建步骤
2019/06/03 Python
python-序列解包(对可迭代元素的快速取值方法)
2019/08/24 Python
详解python中docx库的安装过程
2019/11/08 Python
python 解决cv2绘制中文乱码问题
2019/12/23 Python
Python通过Tesseract库实现文字识别
2020/03/05 Python
Django视图类型总结
2021/02/17 Python
英国最大的宠物食品和宠物用品网上零售商: Zooplus
2016/08/01 全球购物
思想汇报范文
2013/11/04 职场文书
白鹤梁导游词
2015/02/06 职场文书
成功的商业计划书这样写才最靠谱
2019/07/12 职场文书
导游词之南京夫子庙
2019/12/09 职场文书
JS ES6异步解决方案
2021/04/29 Javascript
总结三种用 Python 作为小程序后端的方式
2022/05/02 Python
新的CSS 伪类函数 :is() 和 :where()示例详解
2022/08/05 HTML / CSS
Win11 vmware不兼容怎么办?Win11与VMware虚拟机不兼容的解决方法
2023/01/09 数码科技