[Python]Python/PHP如何查询sql server中NTEXT类型数据
2006-11-30 19:17
941 查看
[Python]Python/PHP如何查询sql server中NTEXT类型数据
Version | Date | Creator | Description |
1.0.0.1 | 2006-11-23 | 郑昀 | 草稿 |
n Python / PHP
n SQL Server 2000 SP4以上版本的Microsoft sql server
n pymssql
n NTEXT类型
本文讨论了在Python中,如果利用pymssql来连接Microsft Sql server 2000 SP4以上版本数据库查询NTEXT类型数据,如何成功返回数据。
在PHP中类似问题也可以这么解决。
pymssql - Simple MSSQL Python extension module,当前我们使用的版本是
pymssql-0.7.4.win32-py2.4.exe。
您可以遵循后文描述的执行步骤,在此之前,我们先描述一个常见的错误现象。
[常见错误现象1]
关键词: Unicode data in a Unicode-only collation or ntext datacannot be sent to clients using DB-Library。
表象: 如果你的sql server 2000 sp4以上版本的数据库中有一个字段是NTEXT类型,那么当你使用pymssql来做查询的时候,您可能得到如下错误:
错误日志 |
MS SQL message: ntext data cannot be sent to clients using DB-Library (such as ISQL) or ODBC version 3.7 or earlier. (severity 16) |
_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. |
这是因为我们的pymssql使用早期的ODBC函数集来获取数据。而微软后来引入了ntext和nvarchar类型,而这是Microsoft C-library所不支持的。所以,连pymssql的说明档里也这么建议:
注释 |
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. A workaround is to change the column type to NVARCHAR (it doesn't exhibit this behaviour), or plain TEXT. |
可行的步骤:
只需要多执行一步即可。1:
声明一句话:
queryTEXTSIZE = str("SET TEXTSIZE 65536")
65536是我限定要返回NTEXT字段数据的最大长度,你可以设置的更大一点,比如1024000。
2:
然后执行这句sql语句:
oConn =
_mssql.connect(databaseHost, databaseUserName, databaseUserPwd)
ret = oConn.query(queryTEXTSIZE)
table = oConn.fetch_array()
3:
然后,声明你的原来的那个获取NTEXT字段的sql语句如下所示:
修改的sql语句 |
SELECT cast ( field_name AS TEXT ) AS field_name |
4:
接下来执行你的这个sql语句即可:
ret = oConn.query(query)
table = oConn.fetch_array()
[参考资料]
1:《What means "Unicode data in a Unicode-only collation or ntext data cannot be sent to clients using DB-Library"?》
相关文章推荐
- [Python]Python/PHP如何查询sql server中NTEXT类型数据
- [Python]Python/PHP如何查询sql server中NTEXT类型数据
- [Python]Python/PHP如何查询sql server中NTEXT类型数据
- [Python]Python/PHP如何查询sql server中NTEXT类型数据
- SQL server查询数据类型为ntext是空或NULL值
- 数据类型为NTEXT,用SELECT查询时如何判断字段是否为空
- 如何用SQL语句查询一个数据表所有字段的类型
- python中如何判断一个变量的数据类型
- sql server数据类型char和nchar,varchar和nvarchar,text和ntext的区别
- SQL语句:orac 3ff0 le中如何插入Date类型的数据和根据Date数据进行查询的方法
- SQL Server 2005中的分区表(二):如何添加、查询、修改分区表中的数据
- python如何判断数据类型
- SQL Server 2005中的分区表(二):如何添加、查询、修改分区表中的数据
- SQL Server 2005中的分区表(二):如何添加、查询、修改分区表中的数据 .
- php redis mongo python 数据类型小结
- SQL Server 2005中的分区表(二):如何添加、查询、修改分区表中的数据
- PHP如何查询MySQL数据页面并输出内容到页面,并另存为CSV或EXCEL文件
- mybatis查询如何返回List<Map>类型数据
- 【CQ】如何查询duplicate类型的上下游数据
- 【原创】C++链表如何像Python List一样支持多种数据类型