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多进程编程下线程之间变量的共享问题
May 05 Python
python 寻找优化使成本函数最小的最优解的方法
Dec 28 Python
Python实现绘制双柱状图并显示数值功能示例
Jun 23 Python
python pytest进阶之fixture详解
Jun 27 Python
opencv-python 提取sift特征并匹配的实例
Dec 09 Python
pandas中read_csv的缺失值处理方式
Dec 19 Python
浅谈python多线程和多线程变量共享问题介绍
Apr 17 Python
解决reload(sys)后print失效的问题
Apr 25 Python
python代码中怎么换行
Jun 17 Python
Python基于mediainfo批量重命名图片文件
Dec 29 Python
完美解决Pycharm中matplotlib画图中文乱码问题
Jan 11 Python
Python环境搭建过程从安装到Hello World
Feb 05 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
【星际争霸1】人族1v7家ZBath
2020/03/04 星际争霸
WML,Apache,和 PHP 的介绍
2006/10/09 PHP
php实现根据字符串生成对应数组的方法
2014/09/22 PHP
ThinkPHP控制器里javascript代码不能执行的解决方法
2014/11/22 PHP
PHP数组相关函数汇总
2015/03/24 PHP
Laravel框架自定义验证过程实例分析
2019/02/01 PHP
[IE&FireFox兼容]JS对select操作
2007/01/07 Javascript
js switch case default 的用法示例介绍
2013/10/23 Javascript
[将免费进行到底]在Amazon的一年免费服务器上安装Node.JS, NPM和OurJS博客
2014/08/18 Javascript
js实现索引图片切换效果
2015/11/21 Javascript
你知道setTimeout是如何运行的吗?
2016/08/16 Javascript
javascript iframe跨域详解
2016/10/26 Javascript
NodeJS使用formidable实现文件上传
2016/10/27 NodeJs
详解JavaScript中的属性和特性
2016/12/08 Javascript
vue-cli结合Element-ui基于cropper.js封装vue实现图片裁剪组件功能
2018/03/01 Javascript
VUE2.0+Element-UI+Echarts封装的组件实例
2018/03/02 Javascript
Bootbox将后台JSON数据填充Form表单的实例代码
2018/09/10 Javascript
vue地址栏直接输入路由无效问题的解决
2018/11/15 Javascript
微信小程序时间轴实现方法示例
2019/01/14 Javascript
使用localStorage替代cookie做本地存储
2019/09/25 Javascript
微信小程序button标签open-type属性原理解析
2020/01/21 Javascript
Python selenium根据class定位页面元素的方法
2019/02/26 Python
Python实现字符型图片验证码识别完整过程详解
2019/05/10 Python
详解如何设置Python环境变量?
2019/05/13 Python
python实现贪吃蛇游戏源码
2020/03/21 Python
win10安装python3.6的常见问题
2020/07/01 Python
德国消费电子产品购物网站:Guter Kauf
2020/09/15 全球购物
SQL Server面试题
2013/04/04 面试题
情况说明书格式范文
2014/05/06 职场文书
2014最新党员批评与自我批评材料
2014/09/24 职场文书
党员廉洁自律个人总结
2015/02/13 职场文书
结婚仪式主持词
2015/06/29 职场文书
2019年大学毕业生个人自我鉴定范文大全
2019/03/21 职场文书
简历中的自我评价怎么写呢?
2019/04/30 职场文书
简单介绍Python的第三方库yaml
2021/06/18 Python