[Python]Python/PHP如何查询sql server中NTEXT类型数据

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介:

[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 data

cannot 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函数集来获取数据。而微软后来引入了ntextnvarchar类型,而这是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")
65536NTEXT

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

这个field_name所代表的字段本来类型是NTEXT,这里我们CAST它为TEXT,这就是一个技巧

4

接下来执行你的这个sql语句即可:

    ret = oConn.query(query)

table = oConn.fetch_array()

 

[参考资料]

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
5天前
|
SQL 关系型数据库 MySQL
MYSQL根据查询结果删除sql 去除重复id 新增对比前一条与后一条数据 去重3种方法​ 窗口函数
MYSQL根据查询结果删除sql 去除重复id 新增对比前一条与后一条数据 去重3种方法​ 窗口函数
|
6天前
|
SQL Java 关系型数据库
Mybatis多表关联查询与动态SQL(下)
Mybatis多表关联查询与动态SQL
18 0
|
6天前
|
SQL Java 数据库连接
Mybatis多表关联查询与动态SQL(上)
Mybatis多表关联查询与动态SQL
10 0
|
1天前
|
PHP Python
最新【Python】 实现循环最快的方式_python while循环加速,2024年最新阿里php面试题
最新【Python】 实现循环最快的方式_python while循环加速,2024年最新阿里php面试题
|
1天前
|
Python
2024年最新【Python】常见的 数据类型:整数类型,Python面试题整理最新
2024年最新【Python】常见的 数据类型:整数类型,Python面试题整理最新
2024年最新【Python】常见的 数据类型:整数类型,Python面试题整理最新
|
1天前
|
数据采集 JSON 数据挖掘
2024年利用Python查询IP地址_怎么查python文件中ip地址,2024年最新15个经典面试问题及答案英语
2024年利用Python查询IP地址_怎么查python文件中ip地址,2024年最新15个经典面试问题及答案英语
|
1天前
|
程序员 PHP Python
2024年Python最全Python基础教程:keys()、values()和 items()方法,百度面试题php
2024年Python最全Python基础教程:keys()、values()和 items()方法,百度面试题php
2024年Python最全Python基础教程:keys()、values()和 items()方法,百度面试题php
|
2天前
|
SQL 关系型数据库 MySQL
查询mysql版本sql - 蓝易云
执行这个命令后,MySQL将返回当前正在运行的版本信息。
34 0
|
4天前
|
Python
【Python3 查询手册学习】,完整版PDF开放下载_python速查手册·模块卷(全彩版) pdf(1)
【Python3 查询手册学习】,完整版PDF开放下载_python速查手册·模块卷(全彩版) pdf(1)
|
6天前
|
IDE 开发工具 Python
Python类型检查
【5月更文挑战第9天】Python类型检查
12 1