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 相关文章推荐
利用soaplib搭建webservice详细步骤和实例代码
Nov 20 Python
python中使用smtplib和email模块发送邮件实例
Apr 22 Python
python中stdout输出不缓存的设置方法
May 29 Python
Python设计模式编程中解释器模式的简单程序示例分享
Mar 02 Python
python 环境搭建 及python-3.4.4的下载和安装过程
Jul 20 Python
wxPython实现带颜色的进度条
Nov 19 Python
通过python检测字符串的字母
Feb 18 Python
keras读取h5文件load_weights、load代码操作
Jun 12 Python
解决运行django程序出错问题 'str'object has no attribute'_meta'
Jul 15 Python
Python把图片转化为pdf代码实例
Jul 28 Python
Python-openpyxl表格读取写入的案例详解
Nov 02 Python
python 获取域名到期时间的方法步骤
Feb 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
web目录下不应该存在多余的程序(安全考虑)
2012/05/09 PHP
PHP中isset()和unset()函数的用法小结
2014/03/11 PHP
php+ajax无刷新分页实例详解
2015/12/07 PHP
thinkPHP5.1框架使用SemanticUI实现分页功能示例
2019/08/03 PHP
PHP基于ip2long实现IP转换整形
2020/12/11 PHP
日期 时间js控件
2009/05/07 Javascript
JQuery 表格操作(交替显示、拖动表格行、选择行等)
2009/07/29 Javascript
让JavaScript 轻松支持函数重载 (Part 1 - 设计)
2009/08/04 Javascript
javascript getElementsByTagName
2011/01/31 Javascript
简单选项卡 js和jquery制作方法分享
2014/02/26 Javascript
JS、DOM和JQuery之间的关系示例分析
2014/04/09 Javascript
Js为表单动态添加节点内容的方法
2015/02/10 Javascript
jQuery实现平滑滚动页面到指定锚点链接的方法
2015/07/15 Javascript
举例说明如何为JavaScript的方法参数设置默认值
2015/11/17 Javascript
JS弹出对话框实现方法(三种方式)
2015/12/18 Javascript
jQuery实现加入收藏夹功能(主流浏览器兼职)
2016/12/24 Javascript
整理关于Bootstrap导航的慕课笔记
2017/03/29 Javascript
vue axios基于常见业务场景的二次封装的实现
2018/09/21 Javascript
Vue通过WebSocket建立长连接的实现代码
2019/11/05 Javascript
javascript实现画板功能
2020/04/12 Javascript
Python中使用装饰器和元编程实现结构体类实例
2015/01/28 Python
Python访问纯真IP数据库脚本分享
2015/06/29 Python
使用FastCGI部署Python的Django应用的教程
2015/07/22 Python
使用Python实现BT种子和磁力链接的相互转换
2015/11/09 Python
Python爬虫天气预报实例详解(小白入门)
2018/01/24 Python
python Pexpect模块的使用
2020/12/25 Python
兰蔻俄罗斯官方网站:Lancome俄罗斯
2019/12/09 全球购物
金融系应届毕业生求职信
2014/05/26 职场文书
经典团队口号大全
2014/06/21 职场文书
2014年秋季开学典礼主持词
2014/08/02 职场文书
农村文化建设标语
2014/10/07 职场文书
2014年社区综治工作总结
2014/11/17 职场文书
金砖之国观后感
2015/06/11 职场文书
初中思想品德教学反思
2016/02/24 职场文书
人民调解协议书
2016/03/21 职场文书
2016年庆“七一”主题党日活动总结
2016/04/05 职场文书