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定时采集摄像头图像上传ftp服务器功能实现
Dec 23 Python
Python基于回溯法子集树模板解决0-1背包问题实例
Sep 02 Python
深入理解Python3 内置函数大全
Nov 23 Python
MAC中PyCharm设置python3解释器
Dec 15 Python
浅谈Python使用Bottle来提供一个简单的web服务
Dec 27 Python
Python爬虫之正则表达式基本用法实例分析
Aug 08 Python
python看某个模块的版本方法
Oct 16 Python
解决每次打开pycharm直接进入项目的问题
Oct 28 Python
Django中reverse反转并且传递参数的方法
Aug 06 Python
python multiprocessing多进程变量共享与加锁的实现
Oct 02 Python
使用pygame写一个古诗词填空通关游戏
Dec 03 Python
PYQT5 vscode联合操作qtdesigner的方法
Mar 24 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
咖啡的化学
2021/03/03 咖啡文化
基于wordpress主题制作的具体实现步骤
2013/05/10 PHP
php编写的抽奖程序中奖概率算法
2015/05/14 PHP
php实现阳历阴历互转的方法
2015/10/28 PHP
老生常谈PHP面向对象之命令模式(必看篇)
2017/05/24 PHP
php 可变函数使用小结
2018/06/12 PHP
类之Prototype.js学习
2007/06/13 Javascript
javascript中字符串替换函数replace()方法与c# 、vb 替换有一点不同
2010/06/25 Javascript
jQuery之日期选择器的深入解析
2013/06/19 Javascript
jquery增加时编辑jqGrid(实例代码)
2013/11/08 Javascript
微信小程序 navigation API实例详解
2016/10/02 Javascript
js解决软键盘遮挡输入框的问题分享
2017/12/19 Javascript
Vue.directive 自定义指令的问题小结
2018/03/04 Javascript
vue.js数据绑定操作详解
2018/04/23 Javascript
JavaScript 格式化数字、金额、千分位、保留几位小数、舍入舍去
2019/07/23 Javascript
VUE实现密码验证与提示功能
2019/10/18 Javascript
[52:40]完美世界DOTA2联赛PWL S2 Magma vs GXR 第一场 11.29
2020/12/02 DOTA
Python生成随机数的方法
2014/01/14 Python
Windows中使用wxPython和py2exe开发Python的GUI程序的实例教程
2016/07/11 Python
一篇文章弄懂Python中所有数组数据类型
2019/06/23 Python
Win10系统下安装labelme及json文件批量转化方法
2019/07/30 Python
Python中base64与xml取值结合问题
2019/12/22 Python
Python使用matplotlib绘制圆形代码实例
2020/05/27 Python
基于opencv的selenium滑动验证码的实现
2020/07/24 Python
django有哪些好处和优点
2020/09/01 Python
html5 datalist 选中option选项后的触发事件
2020/03/05 HTML / CSS
法国时尚童装网站:Melijoe
2016/08/10 全球购物
英国领先的男装设计师服装独立零售商:Repertoire Fashion
2020/10/19 全球购物
优秀乡村医生事迹材料
2014/05/28 职场文书
行政撤诉申请书
2015/05/18 职场文书
小学庆六一主持词
2015/06/30 职场文书
2015年秋季小学开学典礼主持词
2015/07/16 职场文书
《巨人的花园》教学反思
2016/02/19 职场文书
Python获取江苏疫情实时数据及爬虫分析
2021/08/02 Python
python实现局部图像放大
2021/11/17 Python
浅谈GO中的Channel以及死锁的造成
2022/03/18 Golang